2017-05-30 101 views
2

循環我有在JavaScript中的輔助類,我必須這樣使用奇怪,在JavaScript

menu 
    .createMenu("TestMenu", "Description") 
    .addMenuItem("test", "", true, true, "callServerTrigger", 
"testServerEvent") 
.addMenuItem("test", "", true, true, "callServerTrigger", "testServerEvent") 
.addMenuItem("test", "", true, true, "callServerTrigger", "testServerEvent") 
.addMenuItem("test", "", true, true, "callServerTrigger", "testServerEvent") 
    .addCloseButton(); 

,但我必須在這裏使用的循環。

menu 
    .createMenu("TestMenu", "Description") 
    for (var i = 0; i < arr.length; i++) { 
     .addMenuItem(arr[i], "", true, true, "callServerTrigger", "testServerEvent") 
    } 
    .addCloseButton(); 

我試過這個,但是「。」給出語法錯誤。我怎樣才能做到這一點?

回答

3

您可以使用變量來保持鏈接對象。

var temp = menu.createMenu("TestMenu", "Description"); 
for (var i = 0; i < arr.length; i++) { 
    temp = temp.addMenuItem(arr[i], "", true, true, "callServerTrigger", "testServerEvent"); 
} 
temp.addCloseButton(); 

或使用Array#reduce,其中返回值保持鏈接的對象。

arr.reduce(function (r, a) { 
    return r.addMenuItem(a, "", true, true, "callServerTrigger", "testServerEvent"); 
}, menu.createMenu("TestMenu", "Description")).addCloseButton(); 
-1

此外,如果您的arr陣列中沒有任何東西。開始時長度爲0,可能會導致錯誤。

+0

這不會導致錯誤,因爲如果數組爲空邏輯將被簡單地跳過並且addCloseButton仍然會被調用,問題是他試圖在沒有任何上下文的情況下調用addMenuItem,請參閱Nina的答案 – Alex

+1

所以非常真實。這是當你在早晨喝咖啡之前寫的時候發生的事情。 –