新足迹

 找回密码
 注册

精华好帖回顾

· 谈谈我最常搭配的妆容---冬天篇, 附真眼秀 (2009-10-4) tiffany_yuyu · 乐享极致 想啪就啪 一些手机照片 (2015-3-3) 大鸣鼎鼎
· 运动白痴+嘴馋星人之大妈减肥记~~简易版~(目前2个月减重6.8kg) (2016-2-29) 兔子爱吃肉 · 新年快乐!除夕提车,Hyundai All New Santa Fe Elite 2.2D - 更新心得体验 (2013-2-10) 蒙面超人
Advertisement
Advertisement
查看: 1211|回复: 3

Javascript Object Inheritance-Code reuse ---For fun [复制链接]

发表于 2011-2-9 12:04 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Take a real scenario
With a javascript application to deal with transactions.
We can design a general object called "transaction", as parent object
Then design some other objects (invoice / stockreturn/ stockswap/stockadjust...), as child objects

parent object
var transaction={
        createdon:XXX,
        createdby:"xxxx",
        totalamount:"xxx"
        cal_gst:function(rate){
                this.totalamount*rate
        }
};

Child object
var invoice=inheritfrom(transaction)
invoice.setinvoiceno=function(){
        //some codes
        }

Then the invoice object has all the members as transaction has.

var stockreturn=inheritfrom(transaction)
stockreturn.stock_reusable=false...
Then the stockreturn object has all the members as transaction has.

评分

参与人数 1积分 +3 收起 理由
乱码 + 3 Douglas crockford rules !!

查看全部评分

Advertisement
Advertisement

发表于 2011-2-9 12:09 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
At the moment no such function of  "inheritfrom"
There are a few ways to create this function
Let's show one
if (typeof Object.beget !== 'function') {
    Object.beget = function (o) {
              var F = function () {};
               F.prototype = o;
              return new F();
};
}
var invoice= Object.beget(transaction);

Also, we can write like this:

function object(o) {
       function F() {}
       F.prototype = o;
       return new F();
}



It's based on prototype , a hidden property of javascript object.
When create a child object, the child object's prototype point to the parent object

[ 本帖最后由 典 于 2011-2-9 11:12 编辑 ]

发表于 2011-2-9 12:14 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
刚说这个 inheritfrom 没听说过啊, 你就又发出来了, 还是用prototype实现的.

发表于 2011-2-9 12:26 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Dan.and.Andy 于 2011-2-9 11:14 发表
刚说这个 inheritfrom 没听说过啊, 你就又发出来了, 还是用prototype实现的.


before I read Douglas crockford's book I didn't know about the bloody prototype at all

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部