Frage

Ich mag ein benutzerdefinierte Array Objekt machen, die eine Zahl als Index recieves, und je nach dem Wert des Index, würde es einen berechneten Wert zurück.

Zum Beispiel:

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

Ich weiß, dass für das zeigte Beispiel, ich bin besser mit einer Funktion, aber ich möchte wissen, ob ich die Eigenschaften / Index-Suche für einige Dinge außer Kraft setzen können, die Conceptualy Arrays sind, könnte aber eine Berechnung benötigen.

Ich bin mir bewusst, dass x.1 == x[1], so, was ich brauche eine Eigenschaft in JavaScript zu machen.

Ich meine, machen x.variable = x.myPropery(), so jedes Mal, dass ich den Wert x.variable, ich die Rückkehr von x.myPorperty() empfangen.

Ist das überhaupt möglich?

War es hilfreich?

Lösung 2

Zur Zeit Javascript Getter und Setter sind möglich nur auf

  • Firefox
  • Safari 3 +
  • Opera 9.5 +

Internet Explorer (in irgendetwas davon Versionen) fehlt in dieser Hinsicht.

Andere Tipps

Variable [property] ist das gleiche wie die Punkt-Notation, so dass Sie MyArray.2 tun, die eine Variable ist, nicht eine Methode, die ausgewertet wird. Sie können nicht wirklich tun, was Sie ohne Methode mögen, die entweder die Eigenschaft ändert, wenn es zugewiesen wird, oder ein Verfahren, das den richtigen Wert berechnet, wenn Sie es herausziehen.

Und nein, man kann nicht außer Kraft setzen [], seine einfach Punktnotation, es ist nicht wirklich ein Index, die Sie überschreiben können,

Re: Ihr Kommentar, Absolut, können Sie

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') };"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top