向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')]