如果我有一堆对象,并且在这些对象中是字符串“id”(与对象名称相同),我该如何使用该字符串来引用该对象?
示例:
//These objects are tests - note the id's are the same as the object name
var test1 = {
id : "test1",
data : "Test 1 test 1 test 1"
}
var test2 = {
id : "test2",
data : "Test 2 test 2 test 2"
}
/* ----- My Function ----- */
var myObj = null;
function setMyObj(obj){
myObj = obj;
}
setMyObj(test1);
/* ----- My Function ----- */
现在,如果我打电话给以下人员:
myObj.id;
结果是“test1”(一个字符串)。 如果我想用它来从test1获取数据,我该怎么做?
"myObj.id".data
[myObj.id].data
^^^
这些不起作用!
干杯, 富
答案 0 :(得分:4)
如果您的变量是在全局范围内定义的,则以下工作
window[ myObj.id ].data
如果你处于一个功能范围内,事情会变得更加艰难。最简单的方法是在窗口上的特定命名空间中定义对象,并检索与上述代码类似的对象。
答案 1 :(得分:2)
将test1和test2存储在键值集合(也称为对象)中。然后访问它,如:
collection[myObj.id].data
答案 2 :(得分:2)
如果要使用变量引用某些内容,则将该内容设为对象属性,而不是变量。如果它们足够相关以便以这种方式访问,那么它们就足够相关,以便有适当的数据结构来表达这种关系。
var data = {
test1: {
id: "test1",
data: "Test 1 test 1 test 1"
},
test2: {
id: "test2",
data: "Test 2 test 2 test 2"
}
};
然后你可以访问:
alert( data[myObj.id] );
答案 3 :(得分:0)
很好的答案,感谢您的帮助,如果将来发现这一点,这就是我将如何使用它:
var parent = {}
parent.test1 = {
id : "test1",
data : "Test 1 test 1 test 1"
}
parent.test2 = {
id : "test2",
data : "Test 2 test 2 test 2"
}
var myObj = null;
function setMyObj(obj){
myObj = obj;
}
setMyObj(parent.test1);
parent[myObj.id] = null;
//Test1 object is now null, not myObj!