2012-02-21 29 views
45

このコードも何を参照していますか? 匿名機能のラベル付けのためのJavascript 'コロン'?

queryString: function() { 

//some code 

} 

私はWebConsoleに(Firefoxの)でそれをテストしたが、それは実行されませんので、私はそれがfunction queryString() {}と等価ではないことを考えています。

正確には何ですか?

+0

は次のようにする必要があります:queryString = –

+4

オブジェクトやクラス内で関数を定義するために使用されるので、オブジェクトの範囲外にあると思います。 – Dampsquid

答えて

57

あなたはそこにいくつかのコードが欠落しているが、私はこのようなオブジェクトの宣言のその部分を想定しています

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

それは文字通りのオブジェクトのプロパティとしての機能が割り当てられます。それは、これに相当します。一般的には

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

、オブジェクトリテラル構文は次のようになります。

{ key: value, otherKey: otherValue }; 

だから、これはコンソールでは動作しませんでした理由は、それがで囲まれていなかったということです{}文字で、オブジェクトリテラルを示します。また、この構文はオブジェクトリテラルでのみ有効です。

4

:は、オブジェクトとそのプロパティを定義するときに使用されます。

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

ここでobj.queryStringがあなたの機能です。

9

これがそうのようなマップ/オブジェクト宣言内で、おそらくです:

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

obj.queryString(); 
+0

それはそのオブジェクトのプロパティのようです:)ありがとう! – knownasilya

1

queryString: function() { 

//some code 

} 

手段と、あなたはそれが参照する機能を呼び出すためのqueryString()を使用することができます。この種類の参照は、一般に、JavaScript(または疑似クラス; P)をJavaScriptで定義する場合に使用されます。このような何か、

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

だから今のコードの他の任意の部分であなたがCLASS_NAMEのためのオブジェクトを作成し、プロパティ1にアクセスするために使用することができ、property2など、

3

それはラベル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" 
です
関連する問題