En JavaScript, ¿hay alguna diferencia entre hacer referencia al nombre de la variable de un objeto y usar `this` al declarar nuevos pares clave:valor del objeto?

En JavaScript, ¿hay alguna diferencia entre hacer referencia al nombre de la variable de un objeto y usar this al declarar nuevos pares clave:valor del objeto?

    var foo = {
      bar: function() {
        foo.qux = 'value';
      }
    };

    alert(foo.qux); // undefined
    foo.bar();
    alert(foo.qux); // 'value'

    var foo = {
      bar: function() {
        this.qux = 'value';
      }
    };

    alert(foo.qux); // undefined
    foo.bar();
    alert(foo.qux); // value

También: http://jsbin.com/emayub/9/edit

preguntado el 22 de mayo de 12 a las 21:05

1 Respuestas

Solo considerando el código presentado, ambos harán lo mismo. Pero hay algunas cosas a tener en cuenta:

foo no es el nombre del objeto es el nombre del variable.

Y las variables pueden cambiar. Considera esto:

var bar = foo;
foo = null;

Usar foo rompería el código de código, pero al usar this, bar.bar() seguirá funcionando como se esperaba.

Mediante el uso foo, está haciendo que la función dependa del nombre de la variable, por lo que cada vez que la variable cambia, la función se rompe. Este también es un aspecto importante con respecto a la refactorización de código.

contestado el 22 de mayo de 12 a las 21:05

Aprecie la primera oración ya que este fue un ejemplo demasiado simplificado. Cuando creo que este patrón de usar el nombre de la variable del objeto puede ser útil es desde una perspectiva organizativa y de legibilidad del código, específicamente cuando está trabajando con un objeto global cuyo nombre de variable no cambiará, y su aplicación utiliza una buena cantidad de eventos lógica. Definitivamente podría estar defendiendo las peores prácticas, pero es solo un pensamiento. - Antonio

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.