javascript - 如何使用javascript将对象存储在数组中

标签 javascript safari-extension

我正在为 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/

相关文章:

javascript - Jquery 验证,只提醒一次

javascript - JsTree:显示更多选项

selenium - 使用 selenium 中的 safariDriver 启动带有扩展的 safari

javascript - Safari 扩展 : How do you inject content scripts only after a toolbar button is clicked?

firefox-addon - 哪种浏览器最容易为其开发浏览器扩展?

iOS Safari Action 扩展 kUTTypePropertyList 为零

javascript - 为什么 document.querySelectorAll 分配给变量后不起作用?

javascript - 自定义 Javascript EventManager - 请帮我完成

javascript - 如何使用 Ajax 提交成功后重新加载特定表单?

sign - 如何只为一台计算机签署 Safari 扩展程序?