gpt4 book ai didi

javascript - 如何创建具有给定原型(prototype)链的对象?

转载 作者:行者123 更新时间:2023-11-29 22:02:55 25 4
gpt4 key购买 nike

我需要一种方法来创建一个空对象,其原型(prototype)链作为对象数组提供:

var prototypes = [{one: 1}, {two: 2}, {three: 3}];
var created = create(prototypes);
// prototype chain of created should be:
// created --> {one: 1} --> {two: 2} --> {three: 3}

我该怎么做?

最佳答案

你基本上不能(目前*),因为只有 一个 原型(prototype)链,原型(prototype)目前只在对象创建时分配,但你有多个不相关的离散对象。也就是说,要创建链,您需要链中的每个对象都得到前一个对象的支持,但事实并非如此。

可以做的是用这些对象的副本创建链,但是当然,对这些原始对象的后续更改不会反射(reflect)在链中。

您可以通过为这些源对象上的所有现有属性创建带有 getter 和 setter 的新对象并同步它们来使用 ECMAScript5 来关闭,但这不会处理 属性(或删除的属性),只是对现有属性的更改。


* 我在上面说“当前”是因为下一个 ECMAScript 版本的当前草案规范,ECMAScript 第六版,有一个新的 Reflect 对象,它能够在 上设置原型(prototype)追溯现有对象。 (而对于 ECMAScript5 和更早版本,您只能在创建对象时设置对象的原型(prototype)。)因此,从 ES6 开始,您可以使用 future Reflect.setPrototypeOf< 将这些对象组装成链 方法。但现在,跨浏览器,你不能。

关于javascript - 如何创建具有给定原型(prototype)链的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com