我想要一个继承数组属性的对象和一个方法将元素添加到继承的数组。但是,继承的方法yChange()
更改原型数组而不是继承的数组。 This question解释了不良行为发生的原因。但无法弄清楚如何获得理想的行为。如何使用继承的方法更改继承的数组?
var parent = {
x: 0,
y: [],
xChange: function() {this.x += 1},
yChange: function() {this.y.push(1)}
};
var child = Object.create(parent);
child.xChange();
child.yChange();
console.log(child.x, child.y); // 1 [1]
console.log(parent.x, parent.y); // 0 [1]
期望:
console.log(child.x, child.y); // 1 [1]
console.log(parent.x, parent.y); // 0 []
是否有某些原因您不能使用构造函数? – Ryan
我可以,但我想使用对象字面值和'Object.create()'。 –