Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置为另一个对象的Javascript对象未定义_Javascript_Object_Google Chrome Extension - Fatal编程技术网

设置为另一个对象的Javascript对象未定义

设置为另一个对象的Javascript对象未定义,javascript,object,google-chrome-extension,Javascript,Object,Google Chrome Extension,对于我的chrome扩展,我有一个名为storeGroup的函数,它返回一个对象。但是,在函数storeTabsInfo中,当我调用storeGroup并将其设置为另一个对象时,对象内部的部分是未定义的。该对象在storeGroup中已正确填充,因此我不确定为什么它未定义 function storeTabsInfo(promptUser, group) { var tabGroup = {}; chrome.windows.getCurrent(function(currentWindow)

对于我的chrome扩展,我有一个名为storeGroup的函数,它返回一个对象。但是,在函数storeTabsInfo中,当我调用storeGroup并将其设置为另一个对象时,对象内部的部分是未定义的。该对象在storeGroup中已正确填充,因此我不确定为什么它未定义

function storeTabsInfo(promptUser, group)
{
var tabGroup = {};

chrome.windows.getCurrent(function(currentWindow)
{
    chrome.tabs.getAllInWindow(currentWindow.id, function(tabs)
    {
        /* gets each tab's name and url from an array of tabs and stores them into arrays*/
        var tabName = [];
        var tabUrl = [];
        var tabCount = 0;

        for (; tabCount < tabs.length; tabCount++)
        {
            tabName[tabCount] = tabs[tabCount].title;
            tabUrl[tabCount] = tabs[tabCount].url;
        }

        tabGroup = storeGroup(promptUser, group, tabName, tabUrl, tabCount);   // tabGroup does not store object correctly
        console.log("tabGroup: " + tabGroup.tabName);   // UNDEFINED
        chrome.storage.local.set(tabGroup);
    })
})
}

function storeGroup(promptUser, group, name, url, count)
{
var groupObject = {};
// current count of group
var groupCountValue = group.groupCount;

var groupName = "groupName" + groupCountValue;
groupObject[groupName] = promptUser;

var tabName = "tabName" + groupCountValue;
groupObject[tabName] = name;

var tabUrl = "tabUrl" + groupCountValue;
groupObject[tabUrl] = url;

var tabCount = "tabCount" + groupCountValue;
groupObject[tabCount] = count;

var groupCount = "groupCount" + groupCountValue;
groupObject[groupCount] = groupCountValue + 1;

// successfully shows parts of groupObject
console.log("Final group: " + groupObject[groupName] + " " + groupObject[tabName] + " " + groupObject[tabUrl] + " " + groupObject[tabCount] + " " + groupObject[groupCount]);
return groupObject;
}
function storeTabsInfo(promptUser,组)
{
var tabGroup={};
chrome.windows.getCurrent(函数(currentWindow)
{
chrome.tabs.getAllInWindow(currentWindow.id,函数(tabs)
{
/*从选项卡数组中获取每个选项卡的名称和url,并将它们存储到数组中*/
var tabName=[];
var tabUrl=[];
var-tabCount=0;
对于(;tabCount
正如我在上面的评论中所说,您创建了带有组计数的
groupObject
dict键,因此您应该再次使用它来访问它们或删除它们,如果您想再次使用它,尽管我认为这不是必需的,所以请使用:-

... ,tabGroup[tabName + group.groupCount]...
但是,如果您想在编写过程中轻松获得它,只需编写以下代码而不是您的代码:-

function storeGroup(promptUser, group, name, url, count)
{
var groupObject = {};
// current count of group

groupObject['groupName'] = promptUser;

groupObject['tabName'] = name;

groupObject['tabUrl'] = url;

groupObject['tabCount'] = count;

groupObject['groupCount'] = group.groupCount + 1;

// successfully shows parts of groupObject
console.log("Final group: " + groupObject['groupName'] + 
" " + groupObject['tabName'] + " " + groupObject['tabUrl'] + 
" " + groupObject['tabCount'] + " " + 
groupObject['groupCount']);
return groupObject;
}

您的
groupObject
没有
tabname
属性。当您尝试访问它时,
tabGroup.tabName
会被取消定义。如果
tabName
是一个包含属性名称的变量,您需要使用
tabGroup[tabName]
访问它,您应该将所有属性与其组计数一起使用,因为您创建了带有组计数的
groupObject
dict,所以您应该将它们与计数一起使用。console.log(“tabGroup:+tabGroup.tabName”);将不起作用,因为假设group.groupCount为1,则该属性将为tabName1,而不是tabName。