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?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
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.
回答2:
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