Object.create来自一个对象

时间:2013-04-25 02:16:34

标签: javascript

全部,如果我将一个对象传递给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中计算和观察的。

enter image description here

通过minitech的评论更正图表

enter image description here

1 个答案:

答案 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不是比较。