2011-10-07 4 views
7

¿La autovibración solo tiene que ver con las estructuras indefinidas "derewing", porque en JavaScript si especifica un índice o una propiedad que no existe, ¿no lo creará dinámicamente? Pero, ¿no es esto autovivificación porque debes declarar que la estructura subyacente es primero un objeto o una matriz?Autovivificación y Javascript

+1

Este es el tipo de pregunta específica lenguaje de programación que pertenece a [programmers.se]. – zzzzBov

Respuesta

13

El espacio de nombres es un área donde la autovida puede ser útil en JavaScript. Actualmente a "nombre" de un objeto, que tiene que hacer esto:

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

Fueron autovivification el apoyo de JavaScript, no sería necesaria la primera línea. La capacidad de agregar propiedades arbitrarias a los objetos en JavaScript se debe a que es un lenguaje dinámico, pero no es una autovibición.

1

ES6 de Proxy se puede utilizar para implementar autovivification,

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

prueba:

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