-4

假设这是我的对象

// Object Literal
var personObjLit = {
    firstname : "John",
    lastname: "Doe",
    greetFullName : function() {
        return "personObjLit says: Hello " + this.firstname +
        ", " + this.lastname;
    }
}

我想调用greetFullName方法,我可以使用两种方法调用它。

  1. var personFullName = personObjLit.greetFullName();
  2. var personObjLitObject = Object.create(personObjLit);

我想知道这两者有什么区别。我的意思是它只是不同的方法,或者它会影响记忆或其他东西。

4

1 回答 1

0

Object.create创建一个新对象,其原型设置为您传递给它的对象。考虑这段代码:

var a = {};
var b = Object.create(a);

a.propA = 'valueA'; // add a property to a
b.propB = 'valueB'; // add a property to b

a.propA; // "valueA"
b.propB; // "valueB"
b.propA; // "valueA" - inherited from a, which is b's prototype
a.propB; // undefined - only exists on b

您只想Object.create在您有兴趣创建具有特定原型的新对象时使用。如果您没有理由这样做,那么对象文字语法就是要走的路。

有关原型链的更多信息,请参阅https://developer.mozilla.org/en/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

于 2016-07-03T07:38:21.917 回答