0
考虑下面的代码:对象实例共享子属性?
var Car = function() {};
Car.prototype = {
wheels: {
rims: 'steel'
}
}
var volvo = new Car;
var mercedes = new Car;
volvo.wheels.rims = 'aluminium';
console.log(volvo.wheels.rims, mercedes.wheels.rims); // 'aluminium', 'aluminium'
你能解释为什么实例Auto
mercedes
自动继承了rims
从volvo
子属性定义?
注意下面的代码工作正常使用相同的设置:
volvo.wheels = 4;
console.log(volvo.wheels, mercedes.wheels); // 4, Object { rims: 'steel' }
因为'wheels'是一个原型属性。 – dfsq 2014-10-08 15:52:11
每个'car'共享*相同的*对象'wheels'。应该在构造函数内创建特定于实例的属性。 – 2014-10-08 15:52:19
也许以下可以帮助理解原型,构造函数和变异与赋值成员(与原型结合)。 http://stackoverflow.com/questions/16063394/prototypical-inheritance-writing-up/16063711#16063711 – HMR 2014-10-09 02:45:28