不确定术语。
我有一个带有一些数据的 JavaScript“对象”:
var parent = { foo: 42, bar: 2.71, baz: 3.14 };
我需要创建另一个 JavaScript 对象,该对象将提供对父对象的访问,同时支持对父条目的本地覆盖:
var child = extend(parent, { foo: 1, quo: 2 });
child.bar = 3;
parent.qux = 4;
assert(parent.foo === 42);
assert(child.foo === 1);
assert(parent.bar === 2.71);
assert(child.bar === 3);
assert(parent.baz === 3.14);
assert(child.baz === 3.14);
assert(parent.quo === undefined);
assert(child.quo === 2);
assert(parent.qux === 4);
assert(child.qux === 4);
// NB: I don't care about iteration on these objects.
我需要解决方案的开销尽可能低,同时足够跨浏览器。将父值复制到子值的开销太大。
也就是说,我正在寻找类似于 Lua元表链的东西,但在 JavaScript 中。
我正在阅读有关[[Prototype]]
链条的信息。它看起来像是要走的路,但我还没有找到一种轻量级的方式来在这里使用它们。(__proto__
据我了解,跨浏览器还不够。)
有什么线索吗?