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