多重继承就是指,一个子对象中有不止一个父对象的继承模式。
想要实现她,还是非常简单的,而我们只需要延续属性拷贝的继承思路依次扩展对象即可,而对参数中所继承的对象没有限制。
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哥镇楼:
时间: 2024-10-03 19:54:52