我讀這段代碼爲什麼我們需要在JavaScript
// Shape - superclass
function Shape() {
this.x = 0;
this.y = 0;
}
// superclass method
Shape.prototype.move = function(x, y) {
this.x += x;
this.y += y;
console.info('Shape moved.');
};
// Rectangle - subclass
function Rectangle() {
Shape.call(this); // call super constructor.
}
// subclass extends superclass
Rectangle.prototype = Object.create(Shape.prototype);
Rectangle.prototype.constructor = Rectangle;
var rect = new Rectangle();
rect instanceof Rectangle; // true
rect instanceof Shape; // true
rect.move(1, 1); // Outputs, 'Shape moved.'
我真是被這個片段迷惑
Rectangle.prototype = Object.create(Shape.prototype);
Rectangle.prototype.constructor = Rectangle;
爲什麼我們不使用Rectangle.prototype =形狀。原型,Object.create()
有什麼特別之處? 以及如果Rectangle.prototype.constructor = Rectangle;不叫?
'爲什麼我們不使用Rectangle.prototype = Shape.prototype'矩形是一個形狀,但不是每個形狀都是矩形。改變Rectangle.prototype會改變Shape.prototype。如果有人想要使用它(和Chrome中的控制檯日誌記錄),構造函數會進行一致性修復。更多關於構造函數,原型,繼承,混合ins等在這裏:http://stackoverflow.com/a/16063711/1641941 – HMR 2014-12-05 02:40:27