将数组分配给具有项目列表的属性?

时间:2014-08-10 13:13:57

标签: javascript jquery arrays properties assign

我有一些预先存在的JavasSript代码,如下所示:

function createContexMenu() {
    $.contextMenu({
        selector: '.context-menu-target',
        callback: function (key, options) {},
        items: {
            "cut"   : { name: "Cut", icon: "cut.png"},
            "copy"  : { name: "Copy", icon: "copy.png"},
            "paste" : { name: "Paste", icon: "paste.png"},
        }                
        };
    });
}    

如您所见,正在设置三个属性:selector,callback和items。

我需要修改此代码,以便items属性不像现在那样硬编码。我需要将一个项目数组传入函数createContextMenu。

因此对函数的简单更改是添加一个参数,我称之为menuItems:

function createContexMenu(menuItems) {

在调用createContextMenu之前的代码中,我需要设置菜单项数组,然后通过新添加的参数将它们传递给createContextMenu。

以下是我认为我应该这样做的方式:

var cut, copy, paste, items;
cut = { name: "Cut", icon: "cut.png" };
copy = { name: "Copy", icon: "copy.png" };
paste = { name: "Paste", icon: "paste.png" };
items = [ cut, copy, paste ];
createContexMenu(items);

假设我正确设置了数组,现在让我们继续讨论更难的问题。从数组中获取项目并将它们分配给createContextMenuFunction中的items属性。

我是否会执行迭代所有项目并添加每个项目的操作?像这样:

selector: '.context-menu-target',
callback: function (key, options) {},
for (i = 0; i < menuItems.length; i += 1) {
    menuItem = menuItems[i];
    items: {
        menuItem.name : { name: menuItem.name, icon : menuItem.icon };
    }
}

或者我可以以某种方式将项目分配给数组:

items = menuItems;

items : {
    menuItems;
}

谢谢。

〜Ĵ

0 个答案:

没有答案