【问题标题】:How to overwrite an element in javascript object array如何覆盖javascript对象数组中的元素
【发布时间】:2012-08-11 22:33:28
【问题描述】:

我想在 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 }

【问题讨论】:

  • 我知道那里有语法错误,哎呀,现在知道了!

标签: javascript debugging variables object syntax


【解决方案1】:

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

如果您通过[] 访问该属性,则需要引用字符串["foo"],否则解析器将寻找一个名为foo 的变量以插入其中。然而,这个简单的字符串属性最好使用点符号来访问:

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

【讨论】:

  • 当点访问语法无效时也需要括号访问:var obj = {1e5: 3}; alert(obj[1e5])
猜你喜欢
  • 1970-01-01
  • 2021-08-14
  • 2016-01-21
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2022-12-05
相关资源
最近更新 更多