【问题标题】:Understanding result returned from splice in CoffeeScript了解 CoffeeScript 中拼接返回的结果
【发布时间】:2012-04-14 09:00:11
【问题描述】:

我将 CoffeeScript 与 JS 拼接函数一起使用。我对JS拼接函数的理解是应该返回拼接出来的对象,修改原来的数组。这似乎适用于简单的数组,但是当我开始向数组中添加对象时,事情就会崩溃。下面是一个使用 cmets 的简化案例:

还有一个链接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 是否会做一些使这不起作用的事情?如果有人知道发生这种情况的原因和/或解决方法,我将不胜感激,

【问题讨论】:

标签: javascript coffeescript splice array-splice


【解决方案1】:

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

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

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

【讨论】:

  • jsfiddle 上的 mootols 是否等同于咖啡脚本?
  • @andi: 不是。MooTools 是一个 JavaScript 框架,类似于 BackBone、Angular、Knockout 等。在 JsFiddle 中,展开左侧设置栏中的“Languages”部分,您可以看到您可以将“JavaScript”编辑器窗格改为“CoffeeScript”。
【解决方案2】:

splice 返回一个array

所以你需要这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2012-06-22
    • 2012-02-09
    • 2011-01-21
    相关资源
    最近更新 更多