2012-03-13 17 views
5

Estoy tratando de utilizar la gama se extiende por ..what debería poner en el constructor..Here es el códigoCoffeeScript cómo utilizar extiende por matriz

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

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

No parece funcionar ..

+0

hacer un poco de Google para "matriz de JavaScript subclases", que en realidad no período de trabajo. –

Respuesta

-1

no han estado utilizando coffeescript últimamente, así que esto es sólo una suposición, pero tal vez algo como:

class List extends [].prototype 

podría funcionar?

EDIT: Según el comentario "mu es demasiado corto", parece que el problema no está relacionado con ningún script de café. Puede encontrar esta publicación SO relacionada útil, ya que la respuesta seleccionada proporciona dos posibles soluciones a este problema: Is this a reasonable way to 'subclass' a javascript array?

5

No hay una manera fácil de "heredar" del prototipo de matriz. Debe utilizar la composición, es decir

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


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

o va a gastar su tiempo en práctica soluciones complicadas que pueden fallar tan pronto como se intenta analizar la matriz o acceder a su valor de longitud.

más en el tema:

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

Cuestiones relacionadas