¿Es posible hacer una propiedad en javascript?
-
22-07-2019 - |
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?
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') };"