Heim > Web-Frontend > js-Tutorial > Hauptteil

Die Beziehung zwischen dem JavaScript-Aufrufmodus und dieser Schlüsselwortbindung

不言
Freigeben: 2018-04-21 16:09:25
Original
1409 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich relevante Informationen zur Beziehung zwischen dem JavaScript-Aufrufmodus und dieser Schlüsselwortbindung vorgestellt. Freunde, die sie benötigen, können sich auf

Aufrufaufruf

Aufruf beziehen Eine Funktion unterbricht die Ausführung der aktuellen Funktion und übergibt Kontrolle und Parameter an die neue Funktion.

Inkonsistenzen zwischen tatsächlichen und formalen Parametern führen nicht zu Laufzeitfehlern. Mehr werden ignoriert und weniger werden als undefiniert gefüllt.

Jede Methode erhält zwei zusätzliche Parameter: this und arguments. Der Wert davon hängt vom Aufrufmodus ab: Aufrufmodus: Methode, Funktion, Konstruktor und Aufrufmodus anwenden
Dem wird ein Wert zugewiesen und er tritt in dem Moment ein, in dem er aufgerufen wird. Mit der Call-Methode können verschiedene Aufrufmodi implementiert werden


var myObject = { 
value: 0, 
increment: function (inc) { 
this.value += typeof inc === 'number' ? inc : 1; 
} 
}; 
myObject.double = function(){ 
var helper = function(){ 
console.log(this);// this point to window 
} 
console.log(this);// this point to object myObject 
helper(); 
} 
myObject.double();//myObject Window
Nach dem Login kopieren


1 Das Methodenaufrufmuster Methodenaufrufmuster

Methoden: Funktionen werden als Eigenschaften des Objekts gespeichert. Wenn die Methode aufgerufen wird, wird diese an das Objekt gebunden

Öffentliche Methoden: Methoden, die den Kontext des Objekts erhalten, zu dem sie gehören dadurch


myObject.increment(); 
document.writeln(myObject.value); //
Nach dem Login kopieren


Grundlegende Implementierung: myObject.increment。call(myObject,0);

2 Die Funktionsaufrufmusterfunktion Aufrufmuster

Wenn die Funktion kein Attribut des Objekts ist, wird sie als Funktion aufgerufen (etwas Unsinn...), diese ist an das globale Objekt (Fenster) gebunden

In ECMAScript5 gibt es einen neuen strikten Modus, um Probleme so früh wie möglich aufzudecken und das Debuggen zu erleichtern. Dies ist undefiniert


var add = function (a,b) { return a + b;}; 
var sum = add(3,4);// sum的值为7
Nach dem Login kopieren


Die zugrunde liegende Implementierung: add.call(window,3,4)


strict mode:add.call(undefined,3,4)
Nach dem Login kopieren


Der Unterschied zwischen Methodenaufrufmodus und Funktionsaufrufmodus


function hello(thing) { 
console.log(this + " says hello " + thing); 
} 
person = { name: "Brendan Eich" } 
person.hello = hello; 
person.hello("world") // [object Object] says hello world 等价于 person。hello。call(person,“world”) 
hello("world") // "[object DOMWindow]world" 等价于 hello。call(window,“world”)
Nach dem Login kopieren


3 Das Konstruktoraufrufmuster

JavaScript ist eine Sprache, die auf prototypischer Vererbung basiert und eine Reihe von Objektkonstruktionssyntaxen für klassenbasierte Sprachen bereitstellt.

dies verweist auf das Objekt, das von new


var Quo = function (string) { 
this.status = string; 
}; 
Quo.prototype.get_status = function ( ) { 
return this.status; 
}; 
var myQuo = new Quo("this is new quo"); //new容易漏写,有更优替换 
myQuo.get_status( );// this is new quo
Nach dem Login kopieren


4 The Apply Invocation Pattern< zurückgegeben wird 🎜>

Apply und Call sind integrierte Parameter von JavaScript. Beide binden dies sofort an die Funktion, und der letztere muss einzeln übergeben werden durch die unterste Aufrufebene


apply(this,arguments[]); 
call(this,arg1,arg2...); 
var person = { 
name: "James Smith", 
hello: function(thing,thing2) { 
console.log(this.name + " says hello " + thing + thing2); 
} 
} 
person.hello.call({ name: "Jim Smith" },"world","!"); // output: "Jim Smith says hello world!" 
var args = ["world","!"]; 
person.hello.apply({ name: "Jim Smith" },args); // output: "Jim Smith says hello world!"
Nach dem Login kopieren


Im Gegensatz dazu trennt die Bindefunktion das Binden an die Funktion und den Aufruf der Funktion. Damit die Funktion in einem bestimmten Kontext aufgerufen werden kann, gilt insbesondere die Implementierung von event bind


Function.prototype.bind = function(ctx){ 
var fn = this; //fn是绑定的function 
return function(){ 
fn.apply(ctx, arguments); 
}; 
}; 
bind用于事件中 
function MyObject(element) { 
this.elm = element; 
element.addEventListener(&#39;click&#39;, this.onClick.bind(this), false); 
}; 
//this对象指向的是MyObject的实例 
MyObject.prototype.onClick = function(e) { 
var t=this; //do something with [t]... 
};
Nach dem Login kopieren
Verwandte Empfehlungen:


Detailliertes Beispiel für JavaScript, das ActiveX aufruft, um eine Oracle-Datenbank zu betreiben

Eine kurze Diskussion über das aufrufende Objekt von JS

Das obige ist der detaillierte Inhalt vonDie Beziehung zwischen dem JavaScript-Aufrufmodus und dieser Schlüsselwortbindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage