JavaScript中未命名的对象文字

时间:2012-10-04 06:37:36

标签: javascript

以下代码在JavaScript中完全有效: -

  

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

但是我们何时需要这样一个我们无法在代码中引用的对象?

5 个答案:

答案 0 :(得分:3)

您经常使用未命名的文字作为函数调用的参数。一个流行的例子是在元素上调用jQuery插件方法,例如:

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

预先将这些对象分配给变量然后传入它也是可能的(通常是有益的),如下所示:

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

但有时它的第一种方式更简单,更清洁。

答案 1 :(得分:1)

这段代码有点'毫无意义',因为你无法引用它(如你所说)。

您可以使用“无所事事”的多种语言构建有效代码。

例如,

function foo() {
    var bar = 42;
}

同样,上述功能完全有效,但做得不多。

答案 2 :(得分:1)

( { a:10 , b:20 , c:30 } );没有用,因为你没有对象的引用。但同样的方法我们可以定义匿名函数(function(){ })();这非常有用。

答案 3 :(得分:1)

实际上这可能非常方便。例如。你可以用这种方法完美地处理I18n:

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

所以你最终可能会像这样结束:

var lang = navigator.language.slice(0,2)
var dict = ({de: {title: 'foo'}, en: {title: 'bar'}})[lang]
console.log(dict.title)

答案 4 :(得分:0)

()是分组运算符。 [reference]

此表达式返回评估结果。 这可能是类型参考。

{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.