理解CoffeeScript中splice返回的结果

时间:2012-03-30 16:33:45

标签: javascript coffeescript splice array-splice

我正在使用CoffeeScript和JS splice函数。我对JS splice函数的理解是它应该返回拼接出来的对象并修改原始数组。这似乎适用于简单的数组,但是当我开始向数组添加对象时,事情就会崩溃。以下是带注释的简化案例:

链接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

splice是否会做一些不起作用的事情?如果有人知道这种情况发生和/或解决的原因,我会非常感激,

2 个答案:

答案 0 :(得分:4)

Array.splice()会返回已删除元素的数组;因为它有可能通过第二个参数删除多个:

因此,您应该使用alert result[0].do();

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

答案 1 :(得分:1)

splice会返回array

所以你需要这样做:

result = arr.splice(0,1)
alert result[0].do()