向javascript数组元素添加属性
我必须测试一些包含以下比较的代码: (我已尝试简化原始代码) 并已创建测试“应用程序”对象向javascript数组元素添加属性,javascript,Javascript,我必须测试一些包含以下比较的代码: (我已尝试简化原始代码) 并已创建测试“应用程序”对象 app = { base : { premiums: ['first'] } } 然后我尝试向数组中的第一个元素添加属性 app.base.Premium[0]。代码='1' 但当我键入时,它不会返回任何值 app.base.premiums[0].code 进入浏览器控制台 我该怎么做呢?你在做什么:'first'。code='1'
app = {
base : {
premiums: ['first']
}
}
然后我尝试向数组中的第一个元素添加属性
app.base.Premium[0]。代码='1'
但当我键入时,它不会返回任何值
app.base.premiums[0].code
进入浏览器控制台
我该怎么做呢?你在做什么:
'first'。code='1'你认为这样行吗
没有。你需要一个物体。因此,您必须使您的应用程序
符合此要求
app = {
base : {
premiums: [ {} ] // object literal
}
}
您应以以下方式初始化“应用程序”:
var app = {
base : {
premiums: [ {'code':2}]
}
}
现在app.base.premium[0]。代码返回2这与对象无关。问题是您正在尝试设置字符串基元的属性
请改用字符串对象:
premiums: [new String('first')]
在JS中,几乎所有东西都是一个对象,但不是基本值:字符串、数字、null、未定义、布尔值
它们可能看起来像对象,因为当您尝试与原语执行类似对象的交互时,它们被包装到各自的包装器类中
(1).toString()
与(新编号(1))基本相同。toString()
但是,正如您所看到的,创建了Number
实例,然后在发生自动魔术换行时将其丢弃
但是,您可以创建一个新的String
实例,该实例将被保留:
premiums: [new String('first')]
Premium[0]不能同时是字符串和对象。是的,这是原语。Javascript字符串是原语。如果希望对象成为对象,请使用字符串
对象@Nit:String是对象,但String是基元。如果你做了a=newstring(“foo”)
你可以向对象a添加属性。嗨@njzk2你可以用jsfiddle将其添加为一个答案吗?@NicholasMurray:plalx-answer已经涵盖了它。我确信我以前在我的一次迭代中尝试过这个,哈哈,谢谢!!!
premiums: [new String('first')]