Pregunta

Deseo crear un objeto Array personalizado que reciba un número como índice y, según el valor del índice, devolverá un valor calculado.

Por ejemplo:

>>> var MyArray(2);
>>> MyArray[2];
4
>>> MyArray.2;
4

Sé que para el ejemplo mostrado, estoy mejor con una función, pero quiero saber si puedo anular la búsqueda de propiedades / índice para algunas cosas que son matrices conceptuales, pero podrían necesitar algunos cálculos.

Soy consciente de que x.1 == x [1] , así que lo que necesito es hacer una propiedad en javascript.

Quiero decir, hacer x.variable = x.myPropery () , así que cada vez que obtengo el valor de x.variable , recibo el retorno de x.myPorperty () .

¿Es esto posible?

¿Fue útil?

Solución 2

Actualmente Los Getters y Setters de JavaScript son posibles solo en

  • Firefox
  • Safari 3+
  • Opera 9.5+

Falta Internet Explorer (en cualquiera de sus versiones) a este respecto.

Otros consejos

variable [propiedad] es lo mismo que la notación de puntos, por lo que está haciendo MyArray.2, que es una variable, no un método que se evalúa. Realmente no puede hacer lo que quiere sin un método que cambie la propiedad cuando se asigna o un método que calcule el valor correcto cuando lo extraiga.

Y no, no puede anular [], es simplemente una notación de punto, no es realmente un índice que pueda anular

Re: tu comentario, Absolutamente, puedes hacerlo

var x = new Array();
x[1] = function () { alert('x') };

var myFunction = x[1];

x[1]();        // alerts "x"
myFunction();  // alerts "x"

alert(x[1]);         // alerts "function () { alert('x') };"
alert(myFunction);   // alerts "function () { alert('x') };"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top