2012-02-21 10 views
45

A cosa si riferisce anche questo codice? Javascript "due punti" per etichettare le funzioni anonime?

queryString: function() { 

//some code 

} 

ho provato nel WebConsole (Firefox), ma non sarebbe l'esecuzione, così sto pensando che non è equivalente a function queryString() {}.

Quindi cos'è esattamente?

+0

dovrebbe essere: queryString = –

+4

è usato per definire le funzioni all'interno di oggetti o classi, quindi penso che l'hai tolto dall'ambito dell'oggetto. – Dampsquid

risposta

57

non trovi il codice lì, ma suppongo parte di una dichiarazione oggetto proprio in questo modo:

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

Si assegna una funzione come una proprietà di un oggetto letterale. Sarebbe equivalente a questo:

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

In generale, la sintassi letterale oggetto simile a questo:

{ key: value, otherKey: otherValue }; 

Quindi la ragione per cui questo non ha funzionato nella console è che non è stato racchiuso in {} caratteri, che denotano un oggetto letterale. E questa sintassi è valida SOLO in un oggetto letterale.

4

Il : viene utilizzato quando si definisce un oggetto e le sue proprietà.

Ora la funzione è obj.queryString.

9

Questo è probabilmente all'interno di una dichiarazione di carta/oggetto in questo modo:

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

obj.queryString(); 
+0

Quindi è come una proprietà di quell'oggetto :) Grazie! – knownasilya

1

Che

queryString: function() { 

//some code 

} 

significa la si può utilizzare queryString() per chiamare la funzione a cui si riferisce. Questo tipo di riferimento è generalmente usato se si desidera definire una classe (o una pseudo classe; P) nel proprio javascript. Qualcosa di simile,

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(){} 
}; 

Così ora a ogni altro parte del codice è possibile creare oggetti per class_name e utilizzarlo per accedere al proprietà1, Property2 ecc,

3

E 'un'etichetta 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" 
Problemi correlati