批判我的原型继承模式 - ver2

时间:2015-08-18 01:27:06

标签: javascript oop prototypal-inheritance

previous post的后续工作 - 我的目标是避免构造函数并创建一个模式,我可以轻松继承功能

以下代码会根据需要继承任意数量的对象。 construct()函数使用Object.create()将所有继承的对象放在原型上,然后使用传入的属性实例化对象;可选地,您可以传入在对象上下文中调用的其他函数。

作为管家的问题,init函数会自行删除,因此您最终会得到一个干净的对象,即obj.props,然后是所有继承在第一个原型链上的函数/ props。通常,当级联链式继承时,你最终得到一个多级_proto__链,但这里它们都位于第一个链接中,因此编译器有一些查找速度优势。

再次,我欢迎您的反馈......

jsfiddle

prename

1 个答案:

答案 0 :(得分:3)

继承不会生效,您将拥有多个属性副本。

相反,我建议使用Object.create正常继承:

var vehicle = {
  colour: 'blue',
  info: function() {
    console.log('wheels:' + this.wheels + ' colour:' + this.colour);
  }
};
var car = Object.assign(Object.create(vehicle), {
    wheels: 4,
    drift: function() { console.log('drifting'); }
});
var bike = Object.assign(Object.create(vehicle), {
    wheels: 2,
    wheelie: function() { console.log('stunt riding'); }
});
var ferrari = Object.assign(Object.create(car), {colour:'red'} ); 
var yamaha  = Object.create(bike);