Las funciones de javascript y los objetos que utilizan la palabra clave 'this' no funcionan.
mi pregunta aquí es acerca de las funciones y objetos en javascript. Tengo tres preguntas que se derivan de una a otra. En el siguiente ejemplo, trato de acceder al valor de 'a' en la prueba, pero me queda indefinido. pero creo un nuevo objeto de prueba, luego puedo acceder al valor 'a' y cambiarlo.
//create a function called test
var test=function() {
this.a=2
this.b=3 };
test.a//undefined
//create a object called test1 using 'new'
test1 = new test();
test1.a//2
//change the value of a in test1
test1.a=4
test1 //Object { a=4, b=3}
Mientras trataba de descubrir por qué sucede esto, me encontré con estoLas funciones de javascript son objetos? y otra pregunta salió de esto. La solución aceptada para esa pregunta de SO está abajo.
var addn = function func(a) {
return func.n + a;
};
addn['n'] = 3;
addn(3);
Cambié la 'func.n' a 'this' y ya no funciona
var addn=function func(a) {
return this.n+a;
};
addn['n']=3;
addn(3); //NaN
Hacer una función anónima con 'esto' tampoco ayudó
//anonymous function
var addn=function(a) {
return this.n+a;
};
addn['n']=3;
addn(3); //NaN
¿Por qué usar 'esto' no funcionó?
una pregunta final, ¿cuál es la diferencia en el uso de la palabra clave 'new' y 'createObject'. Douglas Crokford sugiere usar 'CreateObject' en su libro, pero no entiendo por qué. Gracias a todos por sus comentarios.