【发布时间】:2016-05-06 10:48:10
【问题描述】:
function Shape() {}
Shape.prototype.move = function(x, y) {
console.info('Shape moved.');
};
function Rectangle() {
Shape.call(this);
}
Rectangle.prototype = Object.create(Shape.prototype);
console.log('Is rect an instance of Rectangle?', rect instanceof Rectangle);// true
console.log('Is rect an instance of Shape?', rect instanceof Shape);// true
rect.move(1, 1); // Outputs, 'Shape moved.'
我从 MDN 看到了这个例子。
我可以知道用 Rectangle.prototype = Shape.prototype; 替换 Rectangle.prototype = Object.create(Shape.prototype); 是否有重大变化?
两种情况下的结果是相同的。
有人告诉我原型属性本身就是一个对象,那么为什么我们要先使用 object.create() 创建另一个对象,然后将其分配给矩形的属性呢?为什么不直接将形状的原型分配给矩形?
【问题讨论】:
标签: javascript object prototype