这可能是一个愚蠢的noob问题,但是:在以下背景中代表什么:
var stuffToDo = {
'bar' : function() {
alert('the value was bar -- yay!');
},
'baz' : function() {
alert('boo baz :(');
},
'default' : function() {
alert('everything else is just ok');
}
};
if (stuffToDo[foo]) {
stuffToDo[foo]();
} else {
stuffToDo['default']();
}
是否将函数存储到每个变量中?
答案 0 :(得分:35)
var obj = {
key: value
};
// obj.key === value; // true
它将value
分配给key
的媒体obj
。虽然对value
可以是什么没有限制(好吧,它必须是可分配的东西),但key
有一些限制:它必须是identifier name,字符串文字或者数字文字。
可以在ECMAScript规范的section 11.1.5中找到更多详细信息。
字面符号类似于:
var stuffToDo = {}; // <-- empty object literal
stuffToDo.bar = function() {...};
// or stuffToDo['bar'] = ...
stuffToDo.baz = function() {...};
// or stuffToDo['baz'] = ...
最大的区别在于,在使用对象文字时,您无法在声明期间访问对象的其他属性。
这不起作用:
var obj = {
foo: value,
bar: obj.foo
};
然而这样做:
var obj = {};
obj.foo = value;
obj.bar = obj.foo;
为了完整起见,JavaScript中还有两种冒号用法:
Conditional (ternary) operator [MDN]:
var val = condition ? true-value : false-value;
someLabel: var x = 5;
答案 1 :(得分:4)