Está asignando el valor de una función anónima a una variable, no a un puntero.
Si desea jugar con punteros, puede usar objetos que se pasan por referencia, no copiar.
Éstos son algunos ejemplos:
"obj2" es una referencia de "obj1", cambia "obj2", y "obj1" se cambia. Alertará false
.
var obj1 = {prop:true},
obj2 = obj1;
obj2.prop = false;
alert(obj1.prop);
"apuntalar" puntos a una propiedad que no es un objeto, "apuntalar" no es un puntero a este objeto, sino una copia. Si cambia "prop", "obj1" no cambia. Se alerta true
var obj1 = {prop:true},
prop = obj1.prop;
prop = false;
alert(obj1.prop);
"obj2" es una referencia a la propiedad "subObj" de "obj1". si se cambia "obj2", se cambia "obj1". Alertará false
.
var obj1 = {subObj:{prop:true}},
obj2 = obj1.subObj;
obj2.prop = false;
alert(obj1.subObj.prop);
por qué es una copia del valor que se pasa cuando las funciones no son tipos primitivos? – thed0ctor
No importa, esto se responde a continuación: http://stackoverflow.com/a/11598151/1316465 – thed0ctor
Solo para aclarar la última frase de esta respuesta, recuerde que el 'valor de la barra' es un 'puntero a la función', no la función en sí misma Por lo tanto, después de 'foo = bar', foo recibe una copia por valor de ese puntero, por lo que tanto foo como la barra apuntan al objeto de función independiente. – drodsou