2017-05-30 19 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(); 

のように使用しなければなりませんが、私はここにforループを使用する必要があります。

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-arrayに何もない場合は、最初は長さが0になるため、エラーが発生している可能性があります。

+0

これは、配列が空であり、ロジックが単純にスキップされ、引き続きaddCloseButtonが呼び出されるようなエラーは発生しません。問題は彼がコンテキストなしで 'addMenuItem'を呼び出そうとしていることです.Ninaの答え – Alex

+1

非常に真実。これは朝のコーヒーの前に書くときに起こることです。 –