Автовивификация и Javascript - PullRequest
       31

Автовивификация и Javascript

7 голосов
/ 07 октября 2011

Связана ли автовивификация только с "разыменованием" неопределенных структур, потому что в JavaScript, если вы укажете индекс или свойство, которое не существует, не будет ли оно динамически создаваться? Но не является ли это автовивификацией, потому что вы должны объявить базовую структуру, чтобы сначала быть объектом или массивом?

Ответы [ 2 ]

14 голосов
/ 07 октября 2011

Пространство имен - это одна из областей, где автовивификация может быть полезна в JavaScript. В настоящее время для «пространства имен» объекта вы должны сделать это:

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

Если бы автовивификация поддерживалась JavaScript, в первой строке не было бы необходимости. Возможность добавлять произвольные свойства к объектам в JavaScript объясняется тем, что он является динамическим языком, но не является полностью авививификацией.

9 голосов
/ 23 октября 2017

ES6 Proxy может использоваться для осуществления авививификации,

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
...