相关疑难解决方法(0)

为什么在Array的子​​类中设置位置不会改变其长度?我不应该子类化数组吗?

在下面的CoffeeScript程序中,我创建了一个子类,Array在其构造函数中设置两个位置:

class SetPositionsArray extends Array
  constructor: (x,y) ->
    @[0] = x
    @[1] = y

  myLength: ->
    @length

sp_array = new SetPositionsArray 1, 2

console.log "sp_array: "
console.log sp_array
console.log "sp_array[0]: "
console.log sp_array[0]
console.log "sp_array[1]: "
console.log sp_array[1]
console.log "sp_array.length: "
console.log sp_array.length
console.log "sp_array.myLength(): "
console.log sp_array.myLength()
Run Code Online (Sandbox Code Playgroud)

我希望这段代码会改变它的length属性sp_array,因为它有效地设置了它的位置.但是,我得到的输出是:

$ coffee sp.coffee
sp_array: 
[ 1, 2 ]
sp_array[0]: 
1
sp_array[1]: 
2
sp_array.length: 
0
sp_array.myLength(): 
0
Run Code Online (Sandbox Code Playgroud)

也就是说,长度为0.

然后,我创建了另一个类,它在实例中推送值而不是设置它们:

class PushValuesArray extends Array
  constructor: (x,y) -> …
Run Code Online (Sandbox Code Playgroud)

javascript arrays coffeescript

4
推荐指数
1
解决办法
235
查看次数

标签 统计

arrays ×1

coffeescript ×1

javascript ×1