javascript --- 多重继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript --- 多重继承相关的知识,希望对你有一定的参考价值。

多重继承就是指,一个子对象中有不止一个父对象的继承模式。

想要实现她,还是非常简单的,而我们只需要延续属性拷贝的继承思路依次扩展对象即可,而对参数中所继承的对象没有限制。

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

我们在其中来了个双重循环,内层循环用于属性拷贝,外层循环用来遍历函数中所传递进来的新对象。

现在来测试一下:

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

var twoDee = {
    name: ‘Dee‘,
    dimension: 2 
}

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

 

来试一下:

triangle.getArea(); // 17.5
triangle.dimension; // 2
triangle.toString); // Anna

 

要注意的是,mulit()中的循环是按照对象的顺序来进遍历的,也就是说,如果有两个同名的属性或方法,前一个就会被后一个所覆盖。

怎么样,比较简单吧!!!

继续A哥镇楼:

技术分享

 

以上是关于javascript --- 多重继承的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中的多重继承与原型链

JavaScript实现多重继承

python多重继承

C++--被遗弃的多重继承经典问题

在不使用多重继承的情况下避免代码重复

Extjs 多重继承?