我previous post的后续工作 - 我的目标是避免构造函数并创建一个模式,我可以轻松继承功能。
以下代码会根据需要继承任意数量的对象。 construct()函数使用Object.create()将所有继承的对象放在原型上,然后使用传入的属性实例化对象;可选地,您可以传入在对象上下文中调用的其他函数。
作为管家的问题,init函数会自行删除,因此您最终会得到一个干净的对象,即obj.props,然后是所有继承在第一个原型链上的函数/ props。通常,当级联链式继承时,你最终得到一个多级_proto__链,但这里它们都位于第一个链接中,因此编译器有一些查找速度优势。
再次,我欢迎您的反馈......
prename
答案 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);