给出以下代码:
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'
您能解释为什么mercedes
的实例Auto
会自动从rims
继承volvo
的子属性定义吗?
请注意,以下代码按预期使用相同的设置:
volvo.wheels = 4;
console.log(volvo.wheels, mercedes.wheels); // 4, Object { rims: 'steel' }
答案 0 :(得分:2)
您只为wheels
创建了一个对象。
您将此对象分配给原型,因此每个实例都会继承其值。
Javascript将从不自动复制对象。
相反,您应该在构造函数中创建对象,以便为每个实例获取一个新对象。