全部,如果我将一个对象传递给Object.create
,这意味着创建一个从它继承的新对象。下面的代码证明了这一点。
function Shape() {
this.x = 0;
this.y = 0;
}
Shape.prototype.move = function(x, y) {
this.x += x;
this.y += y;
console.info("Shape moved.");
};
Rectangle = Object.create(Shape);
Rectangle.__proto__==Shape;//it is true.yes, I can understand
Rectangle//It is Function {} I can not understand it.
Rectangle.constructor==Function//it is true.I can not understand it.
该图表示下面的关系。但我无法理解的是它的重点部分。Rectangle
究竟是什么?我的意思是什么是Function{}
,它来自哪里?以及Rectangle.constructor
属性,我不知道所有对象是否都具有constructor
属性,以及constructor
属性用于什么?感谢。
PS:上面的所有值都是在FireBug中计算和观察的。
通过minitech的评论更正图表
答案 0 :(得分:2)
现在,使用Object.create
的继承是如何工作的。看起来应该是这样的:
function Shape() {
this.x = 0;
this.y = 0;
}
Shape.prototype.move = function(x, y) {
this.x += x;
this.y += y;
console.info("Shape moved.");
};
function Rectangle() {
Shape.call(this);
}
Rectangle.prototype = Object.create(Shape.prototype); // Leaving out the constructor business for simplicity
你在做什么是重复实际的Shape
函数,所以当然(作为一个函数)它的构造函数是Function
。
P.S。 Rectangle.__proto__ = Shape
不是比较。