6 Stimmen

Javascript Prototyp Syntax

Ist dies gültige Javascript-Syntax? Was macht es?

Parser.prototype = {

  // ...

  get currentState() {
    return this.state[this.state.length - 1];
  },

  // ...

}

Siehe https://github.com/LearnBoost/stylus/blob/master/lib/parser.js.

Danke!

5voto

Felix Kling Punkte 751464

Es definiert einen Getter:

Bindet eine Objekteigenschaft an eine Funktion, die aufgerufen wird, wenn auf diese Eigenschaft zugegriffen wird.

Lies über Getter und Setter.

Diese Funktion wird aufgerufen, wenn du auf die Eigenschaft zugreifst:

var sth = obj.currentState

Beachte, dass es sich nicht um einen Funktionsaufruf handelt (es gibt keine ()), sondern um einen normalen Eigenschaftszugriff.

Ein entsprechender Setter sähe so aus:

set currentState(value) {
  // tu etwas mit dem Wert
  // der Wert wäre in diesem Beispiel 42
}

und würde aufgerufen, wenn du einen Wert dieser Eigenschaft zuweist, z.B.

obj.currentState = 42;

Die Schlüsselwörter get und set sind spezielle Operatoren, die innerhalb der Objektliteralnotation verwendet werden sollen. Du könntest auch __defineGetter__ und __defineSetter__ verwenden:

Parser.prototype.__defineGetter__('currentStatus', function() {
    return this.state[this.state.length - 1];
});

Ich bin mir nicht sicher, in welcher Version es eingeführt wurde, es wird möglicherweise nicht von allen Browsern unterstützt (insbesondere IE ;)).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X