Понимание результата, возвращаемого из соединения в CoffeeScript - PullRequest
3 голосов
/ 30 марта 2012

Я использую CoffeeScript вместе с функцией соединения JS.Насколько я понимаю, функция сплайсинга 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

Spice делает что-то, что не работает?Если у кого-то есть представление о причине, по которой это происходит, и / или исправлении, я был бы очень признателен,

Ответы [ 2 ]

4 голосов
/ 30 марта 2012

Array.splice() возвращает массив удаленных элементов;поскольку он может удалить несколько через второй параметр:

Из-за этого вы должны использовать alert result[0].do();

Рабочий пример: http://jsfiddle.net/Cjtaa/

1 голос
/ 30 марта 2012

splice возвращает array.

Так что вам нужно сделать:

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