Autovivification 和 Javascript

发布于 2024-12-09 00:29:27 字数 103 浏览 1 评论 0原文

自动生存是否只与“取消引用”未定义的结构有关,因为在 JavaScript 中,如果您指定不存在的索引或属性,它不会动态创建它吗?但这不是自动生存吗,因为您必须首先将底层结构声明为对象或数组?

Does autovivification only have to do with "derefencing" undefined structures, because in JavaScript if you specify a index or a property that doesn't exist won't it dynamically create it? But is this not autovivification because you must declare the underlying structure to first be an object or an array?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

撕心裂肺的伤痛 2024-12-16 00:29:27

命名空间是 JavaScript 中自动生存可能派上用场的领域之一。目前,要为对象“命名空间”,您必须执行以下操作:

var foo = { bar: { baz: {} } };
foo.bar.baz.myValue = 1;

如果 JavaScript 支持自动生存,则不需要第一行。 JavaScript 中向对象添加任意属性的能力是由于它是一种动态语言,但并不完全是自动生存。

Namespacing is one area where autovivification might be handy in JavaScript. Currently to "namespace" an object, you have to do this:

var foo = { bar: { baz: {} } };
foo.bar.baz.myValue = 1;

Were autovivification supported by JavaScript, the first line would not be necessary. The ability to add arbitrary properties to objects in JavaScript is due to its being a dynamic language, but is not quite autovivification.

蓝礼 2024-12-16 00:29:27

ES6的Proxy可以用来实现autovivification,

var tree = () => new Proxy({}, { get: (target, name) => name in target ? target[name] : target[name] = tree() });

测试:

var t = tree();
t.bar.baz.myValue = 1;
t.bar.baz.myValue

ES6's Proxy can be used for implementing autovivification,

var tree = () => new Proxy({}, { get: (target, name) => name in target ? target[name] : target[name] = tree() });

Test:

var t = tree();
t.bar.baz.myValue = 1;
t.bar.baz.myValue
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文