Heim  >  Artikel  >  Web-Frontend  >  Einführung in __defineGetter__ und __defineSetter__ in Javascript_Javascript-Kenntnissen

Einführung in __defineGetter__ und __defineSetter__ in Javascript_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 16:39:421599Durchsuche

Getter ist eine Methode zum Abrufen des Werts eines Attributs und Setter ist eine Methode zum Festlegen des Werts eines Attributs. Sie können Getter- und Setter-Methoden für jedes vordefinierte Kernobjekt oder benutzerdefinierte Objekt definieren und so neue Eigenschaften zu vorhandenen Objekten hinzufügen.

Es gibt zwei Möglichkeiten, eine Getter- oder Setter-Methode zu definieren:

1. Definieren Sie
während der Objektinitialisierung 2. Nachdem das Objekt definiert wurde, fügen Sie Definitionen über die Methoden __defineGetter__ und __defineSetter__

von Object hinzu

Wenn Sie den Objektinitialisierungsprozess zum Definieren von Getter- und Setter-Methoden verwenden, müssen Sie lediglich „get“ vor der Getter-Methode und „set“ vor der Setter-Methode hinzufügen.

Zu beachten ist außerdem, dass die Getter-Methode keine Parameter hat und die Setter-Methode einen Parameter haben muss, nämlich den neuen Wert des festzulegenden Attributs.

Zum Beispiel:

Code kopieren Der Code lautet wie folgt:

o = {
Wert:9,
         get b() {return this.value;},
set setter(x) {this.value = x;}
}  

Nachdem das Objekt definiert wurde, sind zum Hinzufügen einer Getter- oder Setter-Methode zum Objekt zwei spezielle Methoden erforderlich: __defineGetter__ und __defineSetter__. Diese beiden Funktionen erfordern, dass der erste Parameter der Name des Getters oder Setters ist, der als Zeichenfolge angegeben wird, und dass der zweite Parameter die Funktion ist, die der Getter oder Setter ist.

Zum Beispiel fügen wir dem Date-Objekt ein Jahresattribut hinzu:

Code kopieren Der Code lautet wie folgt:

Date.prototype.__defineGetter__('year', function() {return this.getFullYear();}
Date.prototype.__defineSetter__('year', function(y) {this.setFullYear(y)});        
var now = neues Datum;
alarm(now.year);
Now.year = 2006;
alarm(jetzt);

Welche Form Sie verwenden, hängt hauptsächlich von Ihrem persönlichen Programmierstil ab. Die erste Form ist kompakt und leichter zu verstehen. Wenn Sie jedoch nach der Definition des Objekts einen Getter oder Setter hinzufügen möchten oder der Prototyp dieses Objekts nicht von Ihnen geschrieben wurde oder ein integriertes Objekt ist, müssen Sie die zweite Methode verwenden.

Das Folgende ist eine Implementierung des Hinzufügens des innerText-Attributs zum Mozilla-Browser:


Code kopieren Der Code lautet wie folgt:
HTMLElement.prototype.__defineGetter__
(
„innerText“,function()
//definiere eine Getter-Methode, um den Wert von innerText zu erhalten,
//damit du es jetzt lesen kannst
                                                                                     var textRange = this.ownerDocument.createRange();  
//Bereich verwenden, um den Inhalt des Objekts
abzurufen              textRange.selectNodeContents(this);
//Nur den Inhalt des Objektknotens
abrufen               return textRange.toString(); // gebe innerText den Wert des Knoteninhalts
}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn