3

我真的不明白为什么这不起作用:

thing = {
img78:{ exifmanufacturer:"Canon", exifmodel:"Canon EOS 450D", exifexposuretime:"1/125", exiffstop:"71/10", exifiso:"200"},
img79:{ exifmanufacturer:"Canon", exifmodel:"Canon EOS 550D", exifexposuretime:"1/125", exiffstop:"71/10", exifiso:"100"},
img80:{ exifmanufacturer:"Canon", exifmodel:"Canon EOS 550D", exifexposuretime:"1/30", exiffstop:"16/1", exifiso:"250"},
img81:{ exifmanufacturer:"NIKON CORPORATION", exifmodel:"NIKON D700", exifexposuretime:"10/600", exiffstop:"71/10", exifiso:"800"},
img82:{ exifmanufacturer:"NIKON CORPORATION", exifmodel:"NIKON D700", exifexposuretime:"10/2500", exiffstop:"90/10", exifiso:"800"},
img83:{ exifmanufacturer:"NIKON CORPORATION", exifmodel:"NIKON D700", exifexposuretime:"10/600", exiffstop:"71/10", exifiso:"800"},
img77:{ exifmanufacturer:"Canon", exifmodel:"Canon EOS 450D", exifexposuretime:"1/160", exiffstop:"8/1", exifiso:"100"},
img69:{ exifmanufacturer:"NIKON CORPORATION", exifmodel:"NIKON D700", exifexposuretime:"10/600", exiffstop:"71/10", exifiso:"800"}
}; 

var imageid = 'img80';

console.log('myVar1: ', thing.img80.exifmodel);
console.log('myVar2: ', thing.imageid.exifmodel);

输出:

myVar1: Canon EOS 550D
thing.imageid is undefined

我原以为会反过来。

4

3 回答 3

7

您需要使用[]符号稍微不同地访问它,如下所示:

console.log('myVar2: ', thing[imageid].exifmodel);

在 JavaScript 中,这些是等价的:

obj.Property
obj["Property"]

或者就像你的情况:

var prop = "Property";
obj[prop];
于 2010-08-03T19:56:00.777 回答
0

在第二个例子中,就像写 thing.'img80'.exifmodel 是非法的。如果您想使用字符串来访问对象的字段,您必须执行 thing[imageid].exifmodel。

于 2010-08-03T19:57:29.103 回答
0

当您在这样的字符串中有索引时,您必须使用括号表示法来访问该值:

var imageid = 'img80';
console.log('myVar2: ', thing[imageid].exifmodel);

或者你总是可以采取 eval (或邪恶,取决于你认为这种做法有多糟糕)路线:

eval("console.log('myVar2: '), thing." + imageid + ".exifmodel)");
于 2010-08-03T19:58:08.310 回答