我正在构建chrome扩展程序,并且正在运行以下脚本:
var group = {
'object1': {
option1: '',
option2: ''
},
'object2': {
option1: '',
option2: ''
}
};
chrome.tabs.executeScript({
code: " \
var group_array = [" + Object.keys(group) + "]; \
console.log(group_array[0]); \
"
});
由于某些原因,
console.log
返回未定义的object1
。我希望console.log
返回group
中第一个对象的名称,因此它应该返回object1
。我究竟做错了什么?
最佳答案
我只是测试一下。问题是:
"["+['object1','object2']+"]" -> "[object1,object2]"
所以
var group_array = [object1, object2];
而且,如果直接评估字符串,则object1和object2将被视为变量而不是字符串,并且由于没有名为object1和object2的变量,因此评估失败。
要实现所需的功能,可以循环Object.keys(group)的数组,并将键一个接一个地追加到代码中,也可以直接使用JSON.stringify将结果解析为字符串数组:
" \
var group_array = " + JSON.stringify(Object.keys(group)) + "; \
console.log(group_array[0]); \
"
关于javascript - Chrome扩展循环通过javascript对象无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30632766/