如何覆盖javascript对象数组中的元素

时间:2012-08-15 15:44:23

标签: javascript debugging variables object syntax

我想在javascript中执行以下操作,但有一些关于我不理解的语法:

var theObj = { foo: val1, bar: val2 }
if ( condition ) {
  theObj[foo] = newVal
  return theObj // returns { foo: val1, bar: newVal } 
}
return theObj // returns { foo: val1, bar: val2 }

1 个答案:

答案 0 :(得分:4)

您拥有的不是对象数组,而是对象文字。通常,它的属性将作为theObj.property访问,但当您需要对属性名称(如theObj["property"])执行字符串操作等操作时,JavaScript会提供theObj["property_" + numberVar]的替代语法,或者属性在点表示法中无效(如数字属性theObj[12] = "twelve"

如果您通过[]访问该属性,则需要引用字符串["foo"],否则解析器将查找名为foo的变量以插入其中。但是,使用点表示法可以更好地访问这个简单的字符串属性:

if ( condition ) {
  theObj.foo = newVal
  return theObj // returns { foo: val1, bar: newVal } 
}