我必须测试一些包含以下比较的代码:
(我试图简化原始代码)
if (app.base.premiums[0].code === ‘1’)
并创建了一个测试'app'对象
app = {
base : {
premiums: ['first']
}
}
然后我尝试将属性添加到数组中的第一个元素
app.base.premiums [0] .code ='1';
但是当我输入
时,这不会返回任何值app.base.premiums[0].code
进入浏览器控制台。
我应该怎么做?
答案 0 :(得分:1)
您应该以这种方式初始化“app”:
var app = {
base : {
premiums: [ {'code':2}]
}
}
现在app.base.premiums [0] .code返回2
答案 1 :(得分:1)
几乎所有东西都是JS中的对象,但不是原始值,它们是:string,number,null,undefined,boolean。
它们可能看起来像对象,因为当您尝试与基元执行类似对象的交互时,它们会被包装到各自的包装类中。
(1).toString()
与(new Number(1)).toString()
但是,正如您所看到的,创建了Number
实例,然后在发生自动魔术包装时将其丢弃。
然而,您可以创建一个String
的新实例,该实例将被保留:
premiums: [new String('first')]
答案 2 :(得分:0)
您正在做什么:'first'.code = '1';
您认为这会有效吗?
不。你需要一个物体。因此,您必须将app
设为此
app = {
base : {
premiums: [ {} ] // object literal
}
}
答案 3 :(得分:0)
这与对象无关。问题是您正在尝试在字符串原语上设置属性。
改为使用String对象:
premiums: [new String('first')]