É possível fazer uma propriedade em javascript?
-
22-07-2019 - |
Pergunta
Eu quero fazer um objeto Array
personalizado que recebe um número como índice, e dependendo do valor do índice, retornaria um valor calculado.
Por exemplo:
>>> var MyArray(2);
>>> MyArray[2];
4
>>> MyArray.2;
4
Eu sei que para o exemplo mostrou, eu sou melhor com uma função, mas eu quero saber se eu posso substituir o lookup propriedades / index para algumas coisas que são matrizes conceitualmente, mas poderia precisar de alguma computação.
Estou ciente de que x.1 == x[1]
, então o que eu preciso é fazer uma propriedade em javascript.
Quer dizer, make x.variable = x.myPropery()
, então toda vez que eu recebo o valor de x.variable
, eu recebo o retorno de x.myPorperty()
.
Isto é mesmo possível?
Solução 2
Javascript Getters e Setters são possíveis apenas em
- Firefox
- Safari 3 +
- Opera 9.5 +
Internet Explorer (em qualquer um dos que as versões) está faltando a este respeito.
Outras dicas
variável [propriedade] é o mesmo que a notação de ponto para que você está fazendo MyArray.2, que é uma variável, não um método que é avaliada. Você realmente não pode fazer o que quiser, sem um método que seja altera a propriedade quando ele é atribuído, ou um método que calcula o valor correto quando você retirá-lo.
E não, você não pode substituir [], a sua notação simplesmente ponto, não é realmente um índice que você pode substituir
Re: o seu comentário, absolutamente, você pode fazer
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') };"