我正在为 Safari 浏览器开发扩展。我想将当前事件的选项卡对象作为键存储在数组中。如何在数组中存储多个选项卡对象。
我写了下面的代码。
**第一种情况:
var obj = {};
obj1=new Object();
obj2=new Object();
obj3=new Object();
obj['cTab_'+obj1] = "This is object1";
obj['cTab_'+obj2] = "This is object2";
obj['cTab_'+obj3] = "This is object3";**
问题是我得到了第三个对象值。如何获取所有对象值。
**第二种情况:
var arr = new Array();
cTabObj1 = new Object();
arr[cTabObj1] = 'This is cTabObj1 Value';
cTabObj2 = new Object();
arr[cTabObj2] = 'This is cTabObj2 Value';
cTabObj3 = new Object();
arr[cTabObj3] = 'This is cTabObj3 Value';
alert("arr[cTabObj1] :" + arr[cTabObj1] + " arr[cTabObj2] :" + arr[cTabObj2] + " arr[cTabObj3] :" + arr[cTabObj3]);**
这里我也得到了所有三个对象的"This is cTabObj3 Value"
提前致谢。
最佳答案
i want to store current active tab objects in a array as key
你不能那样做。键是字符串。它们总是字符串。
如果您查看数组,您会发现任何对象都被转换为 [object Object]"
,因此您基本上插入了相同的键 3 次。
将 console.log(arr)
或 console.dir(arr)
与 firebug 或 chrome/opera/safari 一起使用
你想要的是一个 ES6 WeakMap
。
只有 Firefox6 实现了 WeakMap
关于javascript - 如何使用javascript将对象存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6895156/