JavaScript 原型中的新对象

示例

在JavaScript中,任何对象都可以是另一个对象的原型。当一个对象被创建为另一个对象的原型时,它将继承其父对象的所有属性。

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

var obj = Object.create(proto);

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

控制台输出:

> "foo"
> "foo"

NOTE Object.create可以从ECMAScript 5获得,但是如果您需要对ECMAScript 3的支持,可以使用polyfill。

if (typeofObject.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()

返回值

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

例外情况

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