来自原型的新对象
在 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();
};
}
Object.create()
所述的 Object.create()
方法创建具有指定原型对象和属性的新对象。
语法:Object.create(proto[, propertiesObject])
参数 :
- proto (该对象应该是新创建的对象的原型。)
- propertiesObject (可选。如果指定且未定义,则具有可枚举自身属性的对象(即,在其自身上定义的那些属性,而不是沿其原型链的可枚举属性)指定要添加到新创建的对象的属性描述符,并使用相应的属性名称。这些属性对应于
Object.defineProperties()
的第二个参数。)
返回值
具有指定原型对象和属性的新对象。
例外
一个类型错误异常,如果原参数不是空值或对象。