coffeescript如何使用extends for Array

时间:2012-03-13 16:27:31

标签: javascript coffeescript

我正在尝试使用extends for array ..我应该在构造函数中添加什么..这是代码

class List extends Array
  constructor: ()->
      super arguments
      this

list = new List("hello","world")
alert list[0]

似乎不起作用..

2 个答案:

答案 0 :(得分:5)

没有简单的方法可以从数组原型“继承”。你应该使用组合,即

    class List
      constructor: ()->
          this.array = new Array(arguments);
      getArray   :()->
          this.array


list = new List("hello","world")
alert list.getArray()[0]

或者您将花时间实现复杂的解决方案,一旦您尝试解析数组或访问其长度值,它们就会失败。

更多关于这个问题:

http://perfectionkills.com/how-ecmascript-5-still-does-not-allow-to-subclass-an-array/

答案 1 :(得分:-1)

我最近没有使用咖啡脚本,所以这只是一个猜测,但可能是这样的:

class List extends [].prototype

可能有用吗?

编辑:每个“亩太短”的评论,似乎问题不是咖啡脚本相关。您可能会发现此相关的SO帖子很有用,因为所选答案为此问题提供了两种可能的解决方案: Is this a reasonable way to 'subclass' a javascript array?