Heim >Web-Frontend >js-Tutorial >Beispiele für JavaScript-Abschlüsse erklärt_Javascript-Kenntnisse

Beispiele für JavaScript-Abschlüsse erklärt_Javascript-Kenntnisse

WBOY
WBOYOriginal
2016-05-16 16:51:421081Durchsuche

Der Vorteil davon besteht darin, dass innere Funktionen auf die Parameter und Variablen der äußeren Funktion zugreifen können, in der sie definiert sind.

Erstens konstruieren wir ein einfaches Objekt.

Code kopieren Der Code lautet wie folgt:

var testObj = {
Wert: 10,
add: function(inc){
this.value = (typeof inc === "number") ? inc : 1;
}
};

testObj.add();
testObj.value; // 11

testObj.add(2);
testObj.value; // 13


Es kann nicht garantiert werden, dass der Wert nicht illegal geändert wird wie folgt .
Code kopieren Der Code lautet wie folgt:

var testObj = (function(){
var value = 10;
return {
add: function(inc){
value = (typeof inc === "number") ? inc : 1;
},
getValue: function (){
                                          Rückgabewert;
testObj.add();
testObj.getValue(); // 11
testObj.add(2);

testObj.getValue(); // 13

Wir können im Allgemeinen eine Funktion aufrufen, um testObj zu initialisieren Hier wird eine Variable definiert, die den Methoden add und getValue immer zur Verfügung steht, aber aufgrund des Umfangs der Funktion für andere Programme unsichtbar ist. Gleichzeitig können wir auch den Schluss ziehen, dass die innere Funktion einen längeren Lebenszyklus hat als ihre äußere Funktion.


Sehen wir uns weiterhin ein Beispiel für einen Konstruktoraufruf an.



Code kopieren

Der Code lautet wie folgt:var MyObj = function(str){ this .status = str;
};

MyObj.prototype.getStatus = function(){
return this.status;
};

var obj = new MyObj("javascript");
obj.getStatus(); // "javascript"

Es ist nichts Falsches daran, dies zu schreiben, aber es wird ein bisschen „unnötig“ sein ", warum? Wie wäre es mit der Verwendung einer getStatus-Methode, um auf eine Eigenschaft zuzugreifen, auf die direkt zugegriffen werden kann? Natürlich macht es nur dann Sinn, wenn Status ein Privateigentum ist.




Code kopieren
Der Code lautet wie folgt:var obj = function(status){ return {
getStatus: function(){
return status;
}
};
};

var myObj = obj("javascript");
myObj.getStatus(); // "javascript"
Wenn wir hier obj aufrufen, gibt es ein neues Objekt zurück, das die getStatus-Methode enthält, a Der Verweis auf das Objekt wird in myObj gespeichert. Auch wenn obj zurückgegeben wurde, genießt die getStatus-Methode weiterhin das Privileg, auf das Statusattribut des obj-Objekts zuzugreifen. Die getStatus-Methode greift nicht auf eine Kopie des Parameters zu, sondern auf den Parameter selbst. Dies ist möglich, weil die Funktion Zugriff auf den Kontext hat, in dem sie erstellt wurde, was als Abschluss bezeichnet wird.

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