Heim  >  Artikel  >  Web-Frontend  >  Lösung für die Lösung, auf die hier im js-Abschluss (Code) hingewiesen wird

Lösung für die Lösung, auf die hier im js-Abschluss (Code) hingewiesen wird

不言
不言Original
2018-08-23 15:47:012303Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Lösung (dem Code), auf die in js hingewiesen wird. Ich hoffe, dass er für Freunde in Not hilfreich ist.

Das Folgende ist eine Frage: Wo zeigt dies für die in der Objektmethode definierte Unterfunktion darauf, wann die Unterfunktion ausgeführt wird?
Drei Fragen:
(1) Um welches Objekt handelt es sich im folgenden Code?
(2) Kann dieser Code die Funktion erfüllen, myNumber.value um 1 zu erhöhen?
(3) Welche Modifikationsmethoden können verwendet werden, um die richtige Funktion zu erreichen, ohne die Hilfsfunktion aufzugeben?

var myNumber = {
  value: 1,
  add: function(i){
    var helper = function(i){
        console.log(this);          
        this.value += i;
    }
    helper(i);
  }
}
myNumber.add(1);

1. Dies zeigt auf das Fensterobjekt (da die Ausführung der anonymen Funktion global ist, daher kann dieses Objekt nicht um 1 erhöht werden). Funktion erhält automatisch zwei spezielle Variablen, this und arguments. Wenn die interne Funktion diese beiden Objekte durchsucht, sucht sie nur bis zu ihrem aktiven Objekt, sodass sie nicht auf dieses Objekt der externen Funktion zugreifen kann.
3 den Code, um es korrekt zu implementieren Funktion
Methode 1:

var myNumber={
    value:1,
    add:function(i){
        var that=this;//定义变量that用于保存上层函数的this对象
        var helper=function(i){
             console.log(that);
        that.value+=i;
    }
    helper(i);
    }
}
myNumber.add(1);

Methode 2:

var myNumber={
    value:1,
    add:function(i){
        var helper=function(i){
            this.value+=i;
        }
        helper.apply(this,[i]);//使用apply改变helper的this对象指向,使其指向myNumber对象
    }
}
myNumber.add(1);

Methode 3:

var myNumber={
    value:1,
    add:function(i){
        var helper=function(i){
            this.value+=i;
        }.bind(this,i);//使用bind绑定,和apply相似,只是它返回的是对函数的引用,不会立即执行
        helper(i);
    }
}
myNumber.add(1);

Verwandte Empfehlungen:

Wie beurteilt man das Surfen mit js? Handelt es sich bei dem Server um einen PC oder ein Mobilgerät? (Zwei Methoden)

Zwei Möglichkeiten, selbstausführende Funktionen in js aufzurufen

Das obige ist der detaillierte Inhalt vonLösung für die Lösung, auf die hier im js-Abschluss (Code) hingewiesen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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