1

以下のコードはJavaScriptで完全に有効です:-

( { a:10 , b:20 , c:30 } );

しかし、コードで参照できないようなオブジェクトが必要になるのはいつですか?

4

5 に答える 5

4

多くの場合、名前のないリテラルを関数呼び出しのパラメーターとして使用します。一般的な例は、要素に対してjQueryプラグインメソッドを呼び出すことです。例:

$("div").someMethod({prop:'value',otherProp:'value2'});

次のように、そのようなオブジェクトを事前に変数に割り当ててから渡すことも可能です(そして多くの場合有益です)。

var options = {prop:'value',otherProp:'value2'};
$("div").someMethod(options);

しかし、最初の方法の方が簡単でクリーンな場合もあります。

于 2012-10-04T06:42:35.067 に答える
2

( { a:10 , b:20 , c:30 } );オブジェクトの参照がないため、役に立ちません。しかし、同じ方法で無名関数を定義できます(function(){ })(); これはとても便利です。

于 2012-10-04T06:41:17.753 に答える
1

このコードは、(あなたが言ったように)参照できないため、少し「無意味」です。

'何もしない'多くの言語で有効なコードを作成できます。

例えば、

function foo() {
    var bar = 42;
}

繰り返しますが、上記の関数は完全に有効ですが、あまり効果がありません。

于 2012-10-04T06:40:02.767 に答える
1

実際、これはかなり便利です。たとえば、そのアプローチでI18nを完全に処理できます。

({de: {title: 'foo'}, en: {title: 'bar'}})[navigator.language.slice(0,2)]

したがって、次のようなsmthで終わる可能性があります。

var lang = navigator.language.slice(0,2)
var dict = ({de: {title: 'foo'}, en: {title: 'bar'}})[lang]
console.log(dict.title)
于 2012-10-04T06:47:20.480 に答える
0

()グループ化演算子です。【参考

この式は、評価の結果を返します。これはタイプ参照である可能性があります。

{a:10, b:20, c:30}['a'];   // invalid
({a:10, b:20, c:30})['a']; // valid. 
Because the object `{a:10, b:20, c:30}` is after being evaluated.
于 2012-10-04T07:02:51.457 に答える