为什么我无法将对象添加到数组? [javascript]
Why I am not able to add an object to an array? [javascript]
我正在尝试创建一个 firefox 插件来管理组中的选项卡。
创建对象数组
我知道数组有方括号表示法,而对象有大括号表示法。
对象更像是 python 字典而不是 java 对象,因为它们只是一堆键值集(我说的对吗?)。
这是我写的代码:
var groups = [];
var groupcounter = groups.length;
function addTab(tabs) {
for (var tab of tabs) {
console.log(tab.url);
console.log(tab.title);
groups.push({title: tab.title, url: tab.url});
}
groupcounter = groups.length;
console.log("groups length = "+groups.lenght);
}
function onError(error) {
console.log(`Error: ${error}`);
}
function addToGroup(){
browser.tabs.query({currentWindow: true, active: true}).then(addTab,onError);
}
document.addEventListener("click", (e) => {
if (e.target.textContent === "Add To Group"){
addToGroup();
}
});
我期望对于 addToGroup 的每次调用,如果 Promise 然后 "called" 成功函数,我会得到一个对象元素插入到组数组中。
控制台上的打印工作正常,我能够在 firefox 调试工具控制台上看到正确的输出。
console.log(tab.url); // --> prints tab url
console.log(tab.title); // --> prints tab title
但是在将对象添加到数组时,我总是得到undefined(我尝试了很多方法)。
console.log("groups length = "+groups.lenght); //--> prints 'groups length = undefined'
问题与思考
- 可能是范围问题?我知道在函数外部声明变量使其成为全局变量。
- 我想知道是否可以将对象直接传递给推送
- Javascript 对象没有构造函数?
您输入错误 lenght
。它必须是 length
行:
console.log("groups length = "+groups.lenght);
估计打错了groups.lenght
应该是groups.length
我正在尝试创建一个 firefox 插件来管理组中的选项卡。
创建对象数组
我知道数组有方括号表示法,而对象有大括号表示法。 对象更像是 python 字典而不是 java 对象,因为它们只是一堆键值集(我说的对吗?)。
这是我写的代码:
var groups = [];
var groupcounter = groups.length;
function addTab(tabs) {
for (var tab of tabs) {
console.log(tab.url);
console.log(tab.title);
groups.push({title: tab.title, url: tab.url});
}
groupcounter = groups.length;
console.log("groups length = "+groups.lenght);
}
function onError(error) {
console.log(`Error: ${error}`);
}
function addToGroup(){
browser.tabs.query({currentWindow: true, active: true}).then(addTab,onError);
}
document.addEventListener("click", (e) => {
if (e.target.textContent === "Add To Group"){
addToGroup();
}
});
我期望对于 addToGroup 的每次调用,如果 Promise 然后 "called" 成功函数,我会得到一个对象元素插入到组数组中。
控制台上的打印工作正常,我能够在 firefox 调试工具控制台上看到正确的输出。
console.log(tab.url); // --> prints tab url
console.log(tab.title); // --> prints tab title
但是在将对象添加到数组时,我总是得到undefined(我尝试了很多方法)。
console.log("groups length = "+groups.lenght); //--> prints 'groups length = undefined'
问题与思考
- 可能是范围问题?我知道在函数外部声明变量使其成为全局变量。
- 我想知道是否可以将对象直接传递给推送
- Javascript 对象没有构造函数?
您输入错误 lenght
。它必须是 length
行:
console.log("groups length = "+groups.lenght);
估计打错了groups.lenght
应该是groups.length