开发者问题收集

javascript 对象赋值引发异常

2012-12-06
72

我正在尝试构建一个 javascript 矩阵作为对象。

我绑定了:

var variations={}; 
variations["p1088"]["red"]["gen"]=1107;
variations["p1090"]["red"]["l"]=1288;

var variations={}; 
variations.p1088.red.gen=1107;
variations.p1090.red.gen=1288;

但两者都引发异常

TypeError: variations.p1090 is undefined

这里出了什么问题?

3个回答

每个子对象都需要声明。因此,要获得第一个子对象,它应该是

var variations = {};
variations.p1088 = {};
variations.p1088.red = {};
variations.p1088.red.gen = 1107;

但是,如果我理解了你要做什么,我会将变体变成一个对象数组。

var variations = [];
variations[0] = {name: 'p1088',color:'red',gen:1007}
Snuffleupagus
2012-12-06

正如错误所言, variations.p1090 未定义。您从未为其赋值。

var variations={}; 
variations.p1088={};
variations.p1088.red={};
variations.p1088.red.gen=1107;
James Montagne
2012-12-06

因为您不能假设 p1088、red 和 gen 是对象。这有效:

// short version
var variations = { p1088: { red: { gen: 1107 } } };

// long version
var varations = {};
varations.p1088 = {};
varations.p1088.red = {};
varations.p1088.red.gen = 1077;
Brian Cray
2012-12-06