來自原型的新物件

在 JavaScript 中,任何物件都可以是另一個物件的原型。當一個物件被建立為另一個物件的原型時,它將繼承其所有父屬性。

var proto = { foo: "foo", bar: () => this.foo };

var obj = Object.create(proto);

console.log(obj.foo);
console.log(obj.bar());

控制檯輸出:

> "foo"
> "foo"

注意 Object.create 可以從 ECMAScript 5 獲得,但是如果你需要支援 ECMAScript 3,這裡有一個 polyfill

if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}

資料來源: http//javascript.crockford.com/prototypal.html

Object.create()

所述Object.create() 方法建立具有指定原型物件和屬性的新物件。

語法:Object.create(proto[, propertiesObject])

引數

  • proto (該物件應該是新建立的物件的原型。)
  • propertiesObject (可選。如果指定且未定義,則具有可列舉自身屬性的物件(即,在其自身上定義的那些屬性,而不是沿其原型鏈的可列舉屬性)指定要新增到新建立的物件的屬性描述符,並使用相應的屬性名稱。這些屬性對應於 Object.defineProperties() 的第二個引數。)

返回值

具有指定原型物件和屬性的新物件。

例外

一個型別錯誤異常,如果原引數不是空值或物件。