Vine aquí con la misma pregunta, también después de leer un artículo sobre las pérdidas de memoria. Todavía estaba confundido después de leer las respuestas aquí, así que pensé en compartir mis hallazgos después de investigar un poco más.
Puede ser confuso en JavaScript saber si algo como .expandoProperty
es parte del lenguaje o si alguien es inteligente con los nombres de las propiedades.
obj.expandoProperty
en el artículo de pérdida de memoria podría haber sido obj.foo
. El punto que intentan transmitir usando ".expandoProperty" es que la propiedad no existía originalmente como parte del objeto.
var obj = {myProp: ''};
obj.myProp = 'foo'; //myProp is not an expando property
obj.myNewProp = 'bar'; //myNewProp is an expando property
Añadir a la mezcla: .expando
es un IE establecimiento sólo para que "Establece o un valor que indica si las variables arbitrarias pueden ser creados dentro del objeto." MSDN article
Véase también generalized discussion of expando properties on StackOverflow here.
Creo que el punto aquí es que las propiedades de expansión que contienen referencias a otros elementos pueden causar fugas, pero no con los tipos de primitivas según su ejemplo. –