3

JS スプライス関数と共に CoffeeScript を使用しています。JS スプライス関数についての私の理解では、スプライスされたオブジェクトを返し、元の配列を変更する必要があります。これは単純な配列ではうまくいくようですが、配列にオブジェクトを追加し始めるとうまくいきません。以下は、コメント付きの単純化されたケースです。

そしてリンクコード

#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

スプライスはこれを機能させない何かをしますか? これが起こっている理由や修正について誰かが考えているなら、私は非常に感謝しています.

4

2 に答える 2

4

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

このため、使用する必要がありますalert result[0].do();

作業例: http://jsfiddle.net/Cjtaa/

于 2012-03-30T16:36:13.373 に答える
1

spliceを返しますarray

したがって、次のことを行う必要があります。

result = arr.splice(0,1)
alert result[0].do() 
于 2012-03-30T16:37:23.160 に答える