2016-01-19 69 views
0

我正在尝试向插件添加一点自定义。它有一个选项对象(或者它可能被称为哈希对象,可能?),我想从数组中添加更多选项。将选项从对象外部添加到选项对象 - javascript

这里是选项对象“itemKeys”

a.extend(a.zEditor.DEFAULTS, { 
     itemKeys: { 

      "text name 1": "font-size: 15px; color: black;", 
      "text name 2": "font-size: 15px; color: black;" 
     } 

我可以手动添加的项名称作为数组值

key_name = ["text name 1", "text name 2"] 

    a.extend(a.zEditor.DEFAULTS, { 
     itemKeys: { 

      [key_name[0]]: "font-size: 15px; color: black;", 
      [key_name[1]]: "font-size: 15px; color: black;" 
     } 

但是值的数组中的量将手动变化,从而倾斜这样设置它。

通过它,像这样的对象中明确不会工作

itemKeys: { 
     for (var i = 0; i < key_name.Length; i++) { 
      key_name[i]: "font-size: 15px; color: black;", 
      } 
     } 

所以现在我只剩下做出某种循环,增加了新的选择选项对象之外的对象循环。问题是我不知道如何从对象外部向选项对象添加新选项。

我试图

itemKeys:{ “文本名称3”: “字体大小:15像素;颜色:黑色;” }

但是这只是覆盖对象,所以现在它只是有一个选项。

我不能改变插件中的任何其他编码,因为它会导致其他事情中断,所以我留下这样做。

如何从对象外部向itemKey选项对象添加更多选项。

回答

1
a.zEditor.DEFAULTS.itemKeys["text name 3"] = "font-size: 15px; color: black;"; 

或者,假设a.extend()作品像jQuery的$.extend()

a.extend(a.zEditor.DEFAULTS.itemKeys, {"text name 3": "font-size: 15px; color: black;"}); 
+0

我一直在试图找出这2天现在,你刚刚得到它两次!他们都工作。你认为哪一个更好?第一个更短,看起来更容易循环。但是我可能会有某种我不知道的随机优势。 – Rob

+1

当扩展(而不是覆盖)对象属性时,使用'a.extend()'。看到这里,在控制台,输出差异:https://jsfiddle.net/89yoduef/1/。我使用了jquery的'.extend()',它的作用类似'a.extend()'。 – BeNdErR

+0

讨厌,但现在我被困在循环'a'功能内的血腥事物。希望你能看看http://stackoverflow.com/questions/34876436/how-can-i-integrate-this-for-loop-into-this-function – Rob

0

您可以组装一个单独的项目键对象之外,并通过引用分配给它。

var myItemKeys = {}; 

function() { 

    for (var i = 0; i < key_name.Length; i++) { 
      myItemKeys[key_name[i]] = "font-size: 15px; color: black;"; 
    } 

} 

//Set the itemKeys in the object 

a.extend(a.zEditor.DEFAULTS, { 
    itemKeys: myItemKeys 
...