来自原型的新对象

在 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() 的第二个参数。)

返回值

具有指定原型对象和属性的新对象。

例外

一个类型错误异常,如果原参数不是空值或对象。