Cita: Es lo mismo, corrijanme si me equivoco.
De hecho, no es exactamente lo mismo, pero en esencia si.
Prueba con esto:
Código Javascript
:
Ver originalhazalgo();
var hazalgo = function(){
alert('ya hice algo');
}
Al intentar correr ese código te va a dar un error, ya que cuando asignas una función anónima a una variable, no puedes usar dicha función antes de que haya sido declarada. En este caso estas queriendo usarla antes de declararla y pues te tira un error. Por el otro lado, si solo usas notación literal, lo que se conoce como function literal, si puedes llamar a la función aun antes que haya sido declarada.
Código Javascript
:
Ver originalhazalgo();
function hazalgo(){
alert('ya hice algo');
}
En este caso verás que todo funciona correctamente. Ahora, la cosa se pone interesante. Mira:
Código Javascript
:
Ver originalonload = hazalgo;
var hazalgo = function(){
alert('ya hice algo');
}
Veras que no pasa nada. Aun cuando la llamada se está haciendo al cargar la pagina, y se supone que para entonces la variable ya ha sido declarada, no pasa nada. Esto es por que la asignación se está haciendo antes de declarar la variable. Sin embargo, si en lugar de asignar directamente la función hazalgo al evento load de window, asignamos una función anónima que a su vez invoque a hazalgo, la cosa cambia:
Código Javascript
:
Ver originalonload = function(){
hazalgo();
}
var hazalgo = function(){
alert('ya hice algo');
}
Podemos seguir probando con otros ejemplos y curiosidades, pero mi objetivo no es demostrar cuantas curiosidades hay entre estos dos tipos de declarar funciones. Mi objetivo es solo demostrar que aun que en esencia ambos métodos son similares, no son realmente iguales. Sin embargo, sin importar como declares una función, siempre puedes usarla con el operador new para crear una instancia de ese objeto. (Aquellos que argumentan la inexistencia de instancias en javascript, favor de abstenerse de iniciar un debate. Ha sido ampliamente de batido y demostrado que javascript SI tiene instancias.)
Ahora, en cuanto al script, no se por que agregan un método al objeto net, solo para después llamarlo con el operador new. Es un tanto incoherente diría yo.