【发布时间】:2017-04-23 01:24:00
【问题描述】:
如果我想在 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(),但这并不是真正的速记。
有什么想法吗?
【问题讨论】:
-
你总是可以
var object2 = Object.assign(Object.create(object1), {c: 3, d: 4}));? -
实际上,这是
Object.setPrototypeOf可接受的用例之一,而且很容易优化。如果它对您来说太慢,您应该向您的浏览器供应商提出问题。
标签: javascript ecmascript-6 ecmascript-5