2012-02-21 20 views
45

¿A qué se refiere este código también? Javascript 'dos ​​puntos' para etiquetar funciones anónimas?

queryString: function() { 

//some code 

} 

he comprobado en la consola Web (Firefox), pero no sería ejecutar, así que estoy pensando que no es equivalente a function queryString() {}.

¿Qué es exactamente?

+0

debe ser: queryString = –

+4

se usa para definir funciones dentro de objetos o clases, por lo que creo que lo tiene que sacar del alcance del objeto. – Dampsquid

Respuesta

57

se echa en falta algo de código allí, pero asumen su parte de una declaración de objeto como esto:

var obj = { 
    queryString: function() { 
    //some code 
    } 
}; 
obj.queryString(); 

Se asigna una función como una propiedad de un objeto literal. Sería equivalente a esto:

var obj = {}; 
obj.queryString = function() { ... }; 
obj.queryString(); 

En general, la sintaxis objeto literal es el siguiente:

{ key: value, otherKey: otherValue }; 

Así que la razón esto no funciona en la consola es que no se incluye en {} caracteres, que denotan un objeto literal. Y esta sintaxis es válida SÓLO en un objeto literal.

4

El : se utiliza al definir un objeto y sus propiedades.

var obj = { 
    queryString: function() { 
     //some code 
    } 
} 

Ahora obj.queryString es su función.

9

Este es probablemente el interior de una declaración mapa/objeto, así:

var obj = { 
    queryString: function() { 
     alert('here'); 
    }, 
    eggs: function() { 
     alert('another function'); 
    } 
}; 

obj.queryString(); 
+0

Así que es como una propiedad de ese objeto :) ¡Gracias! – knownasilya

1

Lo que el

queryString: function() { 

//some code 

} 

significa que es el que puede utilizar queryString() para llamar a la función que se refiere a. Este tipo de referencia se utiliza generalmente si desea definir una clase (o una pseudoclase; P) en su javascript. Algo como esto,

var application= { namespace: {} }; 

application.namespace.class_name = function(){ 

    function constructor(){ 
    return { 
    exposed_property1 : property1, 
    exposed_property2 : property2, 
    ... 
    ... 
    } 
    } 
    //Write property/functions that you want to expose. 
    // Write rest of the function that you want private as function private(){} 
}; 

Así que ahora en toda otra parte del código se pueden crear objetos para class_name y utilizarlo para acceder a la propiedad1, propiedad2 etc.,

3

Es una etiqueta https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

var i, j; 

loop1: 
for (i = 0; i < 3; i++) {  //The first for statement is labeled "loop1" 
    loop2: 
    for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2" 
     if (i == 1 && j == 1) { 
     continue loop1; 
     } 
     console.log("i = " + i + ", j = " + j); 
    } 
} 

// Output is: 
// "i = 0, j = 0" 
// "i = 0, j = 1" 
// "i = 0, j = 2" 
// "i = 1, j = 0" 
// "i = 2, j = 0" 
// "i = 2, j = 1" 
// "i = 2, j = 2" 
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2" 
Cuestiones relacionadas