如果我想在JavaScript中创建一个具有到另一个对象的原型链接的对象,但是它有几个自己的属性,我该怎么做呢?
var object1 = {
a: 1,
b: 2
};
var object2 = Object.create( object1 );
object2.c = 3;
object2.d = 4;
console.log( object2 ); // my new object with object1 as it's prototype link
我的挑战是,我必须一次设置object2
个属性。
我的另一个选择是:
var object1 = {
a: 1,
b: 2
};
var object2 = {
c: 3,
d: 4
};
Object.setPrototypeOf( object2, object1 );
console.log( object2 );
我上面的挑战是表现应该是可怕的。即,setPrototypeOf
很慢。 https://jsperf.com/object-create-vs-object-setprototypeof
然后当然,你提供的是“速记”,writeable
,enumerable
以及Object.create()
的所有内容,但这并不是真正的简写。
有什么想法吗?
答案 0 :(得分:3)
作为for="navigation"
的替代方法,请记住Object.create
接受第二个参数,其中包含要添加到对象的属性描述符:
Object.assign
请注意,默认值是不可配置的,不可写的且不可枚举的。
如果这是一个问题,ES2017会介绍Object.getOwnPropertyDescriptors
。
var object1 = {
a: 1,
b: 2
};
var object2 = Object.create(object1, {
c: {value: 3, enumerable: true},
d: {value: 4, enumerable: true}
});
console.log( object2 ); // my new object with object1 as it's prototype link
答案 1 :(得分:2)
您可以将Object.create
与Object.assign
结合使用:
var object2 = Object.assign(Object.create(object1), {
c: 3,
d: 4
});