2012-03-30 13 views
3

私はJSスプライス機能と共にCoffeeScriptを使用しています。私はJSスプライス関数の理解は、スプライスされたオブジェクトを返す必要があり、元の配列を変更する必要があります。これは単純な配列でうまくいくように思えますが、配列にオブジェクトを追加し始めると事態が悪化します。CoffeeScriptでスプライスから返された結果を理解する

そしてリンクcode

#Class that will go in array 
class Thing 
    do: -> 
    alert "Hi" 

a = new Thing 
b = new Thing 

arr = [] 

arr.push(a) 
arr.push(b) 

arr[0].do() # this works 

result = arr.splice(0,1) 
alert result.do() # this does not work 

スプライスが、これは動作しない可能何かを行います。以下のコメントで簡略化された場合は?このようなことが起こっている理由や考え方が分かっていれば、私は非常に感謝しています。

+0

'スプライス()'ドキュメントhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice – andi

答えて

4

Array.splice()の要素が削除されました。それが二番目のパラメータを介して複数のを削除する可能性があるとして:このため

を、あなたはarrayを返しsplicealert result[0].do();

Working example: http://jsfiddle.net/Cjtaa/

+0

コーヒースクリプトに相当するjsfiddleのmootolsですか? – andi

+0

@andi:いいえ、MooToolsはBackBone、Angular、Knockoutなどと同様のJavaScriptフレームワークです.JsFiddleでは左側の設定バーの "Languages"セクションを展開すると、 "JavaScript"エディタ代わりに "CoffeeScript"にペイントします。 – Matt

1

を使用する必要があります。

だから、あなたがする必要があります。

result = arr.splice(0,1) 
alert result[0].do() 
関連する問題