多重继承

多重继承实现是及其简单的,我们只需要用属性拷贝法的继承思路依次扩展对象。下面,我们创建一个multi()函数,它可以接受任意数量的输入性对象。然后,我们在其中实现了一个双重循环,内层循环用于拷贝属性,而外层循环则用于遍历函数参数中所传递进来的所有对象。

function multi(){
   var n={},stuff,j=0,len=arguments.length;
   for(j=0;j<len;j++){
       stuff=arguments[j];
       for(var i in stuff){
         n[i]=stuff[i]
       } 
   }
   return n;
}

现在来测试一下:首先,我们需要创建shape、twoDee以及一个匿名对象。然后调用multi()函数时将这三个对象传递给它,该函数会返回新建的triangle对象。

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

var twoDee={
    name:'2D shape',
    dimensions:2
};

var triangle=multi(shape,twoDee,{
    name:'Triangle',
    getArea:function(){return this.side*this.height/2;},
    side:5,
    height:10
});

然后,让我们来看你它是否可以工作:

混合插入

混合插入并不是通过子对象的继承与扩展来完成的。也就是说,每当我们新建一个对象时,可以选择将其他对象的内容混合到我们新的对象中去,只要将它们全部传递给multi()函数,我们就可以在不建立相关继承关系树的情况下获得这些对象的功能。

 

posted on 2015-02-05 13:36  凡一二三  阅读(230)  评论(0编辑  收藏  举报