自动生成和Javascript

rub*_*buc 7 javascript autovivification

自动生成只与"derefencing"未定义的结构有关,因为在JavaScript中,如果指定索引或不存在的属性,它是否会动态创建它?但这不是自动生成,因为你必须声明底层结构首先是一个对象或一个数组?

gil*_*ly3 14

命名空间是JavaScript中可能很方便自动化的一个领域.目前要"命名空间"一个对象,你必须这样做:

var foo = { bar: { baz: {} } };
foo.bar.baz.myValue = 1;
Run Code Online (Sandbox Code Playgroud)

如果JavaScript支持自动生成,则不需要第一行.在JavaScript中向对象添加任意属性的能力是由于它是一种动态语言,但不是很自动化.


Ebr*_*owi 9

ES6 Proxy可用于实现自动修复,

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

测试:

var t = tree();
t.bar.baz.myValue = 1;
t.bar.baz.myValue
Run Code Online (Sandbox Code Playgroud)