tipos - javascript ejemplos
DeclaraciĆ³n de la funciĆ³n de JavaScript (8)
El primer ejemplo crea una variable global (si no existe una variable local con ese nombre) llamada some_func
, y le asigna una función, de modo que se puede invocar some_func()
.
El segundo ejemplo es una declaración de función dentro de un objeto. asigna una función como el valor de la propiedad show
de un objeto:
var myObj = {
propString: "abc",
propFunction: function() { alert(''test''); }
};
myObj.propFunction();
¿Son los fragmentos de código de JavaScript que figuran a continuación algún tipo de declaración de función? Si no puede alguien, por favor dé una visión general de lo que son?
some_func = function(value) {
// some code here
}
y
show:function(value){
// some code here
}
El primero es simplemente crear una función anónima y asignarla a una variable some_func
. Así que usar some_func()
llamará a la función.
El segundo debe ser parte de una notación de objeto.
var obj = {
show:function(value){
// some code here
}
};
Entonces, obj.show () llamará a la función
En ambos casos, está creando una función anónima. Pero en el primer caso, simplemente lo estás asignando a una variable. Mientras que en el segundo caso lo asigna como miembro de un objeto (posiblemente entre muchos otros).
El primero...
some_func = function(value) {
// some code here
}
está declarando una variable y le asigna una función anónima , que es equivalente a ...
function some_func (value) {
// some code here
}
El segundo debería verse así ...
obj = {
show:function(value){
// some code here
}
}
// obj.show(value)
y equivalente a ...
//pseudo code
class MyClass {
function show (value) {
// some code here
}
}
obj = new MyClass(); // obj.show(value)
Aclamaciones
Hay seis formas / contextos en los que crear funciones:
1) Notación declarativa estándar (más familiar para las personas con fondo C)
function foo() {}
Todo lo demás son expresiones de función:
2) Como método de un objeto literal.
var obj = {
foo: function() {}
};
3) Como método de un objeto instanciado (creado cada vez que se ejecute un new
)
var Obj = function() {
this.foo = function() {};
};
4) Como método de un prototipo (creado solo una vez, independientemente de cuántas veces se ejecute el new
)
var Obj = function() {};
Obj.prototype.foo = function() {};
5) Como una función anónima con una referencia (el mismo efecto que el # 1) *
var foo = function() {};
6) Como una función anónima ejecutada inmediatamente (completamente anónima)
(function() {})();
* Cuando miro esta afirmación, considero el resultado. Como tal, realmente no considero esto como anónimo, porque se crea una referencia a la función de inmediato y, por lo tanto, ya no es anónimo. Pero es lo mismo para la mayoría de la gente.
La primera es una declaración de función asignada a una variable (al menos debería ser, a pesar de que falta la declaración de tipo de variable primero), la segunda probablemente está relacionada con una declaración de objeto.
La primera es una variable local (o global) con función anónima asignada.
var some_name = function(val) {};
some_name(42);
La segunda es la propiedad de algún objeto (o una función con una etiqueta delante de él) con una función anónima asignada.
var obj = {
show: function(val) {},
// ...
};
obj.show(42);
Las funciones son ciudadanos de primera clase en JavaScript, por lo que puede asignarlas a variables y llamarlas desde variables.
Incluso puede declarar la función con otro nombre que no sea la variable a la que se asignará esa función. Es útil cuando desea definir métodos recursivos, por ejemplo, en lugar de esto:
var obj = {
show: function(val) {
if (val > 0) { this.show(val-1); }
print(val);
}
};
usted podría escribir:
var obj = {
show: function f(val) {
if (val > 0) { f(val-1); }
print(val);
}
};
Se les llama funciones anónimas; Puedes leer más sobre ellos aquí:
http://www.ejball.com/EdAtWork/2005/03/28/JavaScriptAnonymousFunctions.aspx
Una forma de hacerlo:
var some_func = function(value) {
// some code here
}
De otra manera:
function some_funct() {
}
Otra forma más:
var some_object={};
some_object["some_func"] = function() {};
o:
var some_object={};
some_object.some_func = function() {};
En otras palabras, son muchas formas de declarar una función en JS.
Tu segundo ejemplo no es correcto.