码迷,mamicode.com
首页 > 其他好文 > 详细

原型继承与属性拷贝的混合应用

时间:2015-02-05 11:12:57      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

对于继承应用来说,主要目标就是将一些现有的功能归为己有。也就是说,我们在新建一个对象时,通常首先应该继承与现有对象,然后再为其添加额外的方法和属性。具体而言就是:

  • 使用原型继承的方式克隆现存对象。
  • 而对于其他对象使用属性拷贝的方式
function objectPlus(o,stuff){
    var n;
    function F(){}
    F.prototype=o;
    n = new F();
    n.uber=o;

    for (var i in stuff){
       n[i] = stuff[i];
    }
    return n;
}

这个函数接受两个参数,其中对象o用于继承,而另外一个对象stuff则用于拷贝方法与属性。接下来我们看看实际应用。首先,需要一个基本对象shape:

var shape={
    name:‘shape‘,
    toString:function(){return this.name;}
}

接着再创建一个继承于shape的2D对象,并为其添加更多的属性。这些额外的属性由一个用文本标识法所创建的匿名对象提供。

var twoDee = objectPlus(shape,{
    name:‘2D shape‘,
    toString:function(){return this.uber.toString()+‘, ‘+this.name;}
});

现在,我们来创建一个继承于2D对象的triangle对象,并为其添加一些额外的属性。

var triangle = objectPlus(twoDee,{
    name:‘Triangle‘,
    getArea:function(){return this.side*this.height/2;},
    side:0,
    height:0
});

创建一个具体的triangle对象my,并自定义其部分属性:

技术分享

 

原型继承与属性拷贝的混合应用

标签:

原文地址:http://www.cnblogs.com/zhongxinWang/p/4274151.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!