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