将匿名对象添加到对象

时间:2011-07-20 18:41:07

标签: javascript jquery

我知道要为现有的JavaScript对象添加一个命名对象:

var json = {};
json.a = {name:"a"};

但是如何以类似的方式向现有JavaScript对象添加对象而不为其指定关联名称,以便可以通过for()语句访问它。对不起,如果我有点模糊,我对JavaScript对象了解不多。

更新
我希望最终结果如下:

var json = [{name:'a'}{name:'b'}];

5 个答案:

答案 0 :(得分:5)

你所拥有的并不是严格意义上的JSON对象。你使用的是JS对象文字。

你可以这样做:

var jsObj = {};

// add a 'name' property
jsObj = { name: 'a'};

var anotherObj = { other: "b" };

// will add 'other' proprty to jsObj
$.extend(jsObj, anotherObj);
// jsObj becomes - {name: 'a', other:'b'}

上面的 JSON 表示形式如下:

var jsonString = "{'name': 'a', 'other':'b'}";

// will give you back jsObj.
var jsonObj = JSON.Parse(jsonString); // eval(jsonString) in older browsers

请注意,您不能拥有没有名称的财产。这是无效的:

// invalid, will throw error
jsObj = { : 'a'};

答案 1 :(得分:3)

尝试使用

推送项目的数组
myArrayVar.push(value);

myArrayVar[myArrayVar.length] = value;

答案 2 :(得分:0)

拥有没有属性名称的对象的属性是没有意义的。毕竟,“for ... in”循环是对该属性名称集合的循环。也就是说,

for (var k in obj)

将“k”设置为等于“obj”中属性的每个名称

答案 3 :(得分:0)

您不能这样做,因为JSON对象是字符串 - 值对的集合。值可以是数组,您可以将对象推送到该数组中,而不使用关联名称。

http://www.json.org/

答案 4 :(得分:0)

您所描述的是一系列对象。

var j = [{name:'a'},{name:'b'}];

这具有您正在寻找的属性。您可以这样操作:

for(var i in j) {
    alert(j[i].name);
}