Getter ist eine Methode, um den Wert eines Attributs zu erhalten, und Setter ist eine Methode zur Festlegung des Werts eines Attributs. Getter- und Setter-Methoden können für jedes vordefinierte Kernobjekt oder ein benutzerdefiniertes Objekt definiert werden, wobei vorhandenen Objekten neue Eigenschaften hinzugefügt werden.
Es gibt zwei Möglichkeiten, eine Getter- oder Setter -Methode zu definieren:
1. Definieren Sie bei Objektinitialisierung
2. Nachdem das Objekt definiert wurde, wird die Definition durch die __defineGetter__- und __definesetter__ -Methoden des Objekts hinzugefügt.
Bei der Definition von Getter- und Setter -Methoden unter Verwendung des Objektinitialisierungsprozesses ist es das einzige, was Sie in der Getter -Methode "GET" und in der Setter -Methode "einstellen" können.
Eine andere zu beachten, dass die Getter -Methode keine Parameter enthält und die Setter -Methode einen Parameter haben muss, dh den neuen Wert des zu setzen.
Zum Beispiel:
Die Codekopie lautet wie folgt:
o = {
Wert: 9,
Holen Sie sich b () {return this.value;},
Setzen Sie Setter (x) {this.value = x;}
}
Nachdem das Objekt definiert ist, fügen Sie dem Objekt eine Getter- oder Setter -Methode hinzu, zwei spezielle Methoden __defineGetter__ und __definesSetter__. Diese beiden Funktionen verlangen, dass der erste der Name eines Getter oder Setters in der Zeichenfolge ist, und der zweite Parameter ist eine Funktion als Getter oder Setter.
Zum Beispiel fügen wir dem Datumsobjekt ein Jahr Attribut hinzu:
Die Codekopie lautet wie folgt:
Date.Prototype .__ DefineGetter __ ('Jahr', function () {return this.getingfullyear ();});
Date.Prototype .__ DefinesSerTter __ ('Jahr', Funktion (y) {this.setfoulyar (y)});
var jetzt = neues Datum;
alarm (jetzt. Jahr);
jetzt. Jahr = 2006;
alarm (jetzt);
Für welche Form, die hauptsächlich vom Programmierstil des Einzelnen angenommen werden soll, ist die erste Form kompakt und leichter zu verstehen. Wenn Sie jedoch Getter oder Setter hinzufügen möchten, nachdem das Objekt definiert wurde oder der Prototyp dieses Objekts nicht von Ihnen geschrieben oder integriert ist, müssen Sie die zweite Methode verwenden.
Hier ist eine Implementierung, die dem Mozilla -Browser InnerText -Attribut hinzufügt:
Die Codekopie lautet wie folgt:
Htmlelement.prototype .__ DefineGetter__
(
"InnerText", Funktion ()
// Definieren Sie eine Getter -Methode, um den Wert von InnerText zu erhalten.
// So kannst du es jetzt lesen!
{
var textrange = this.ownerDocument.createrange ();
// Verwenden Sie den Bereich, um den Inhalt des Objekts abzurufen
textrange.selectnodeContents (this);
// Erhalten Sie nur den Inhalt des Objektknotens
return textrange.tostring ();
// Geben Sie InnerText den Wert des Knoteninhalts an
}