Heim > Web-Frontend > js-Tutorial > Hauptteil

Daran ist der Aufrufmodus gebunden

php中世界最好的语言
Freigeben: 2018-06-06 17:41:49
Original
1456 Leute haben es durchsucht

Dieses Mal werde ich Ihnen die Bindung des Anrufmodus vorstellen. Was sind die Vorsichtsmaßnahmen für die Bindung des Anrufmodus? Das Folgende ist ein praktischer Fall.

Aufrufaufruf

Rufen Sie eine Funktion auf, um die Ausführung der aktuellen Funktion anzuhalten und Steuerung und Parameter an die neue Funktion zu übergeben.

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 auf, in dem er aufgerufen wird. Mit der Aufrufmethode können verschiedene Aufrufmuster 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

Methode: Die Funktion wird als Attribut des Objekts gespeichert. Wenn die Methode aufgerufen wird, wird diese an das Objekt gebunden

Öffentliche Methode: Methode zum Abrufen des Kontexts des Objekts, zu dem sie gehören, über diese

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

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

2 Das Funktionsaufrufmuster Funktionsaufrufmuster

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

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

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

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 von new zurückgegebene Objekt

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 Das Apply-Aufrufmuster

Apply und Call sind beide integrierte Parameter von Javascript Davon wird diese Bindung sofort in eine Funktion geändert. Der erstere Parameter ist ein Array, der letztere muss einzeln übergeben werden. apply wird auch durch den Aufruf der untersten Ebene implementiert

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 ist die Bindungsfunktion trennt die Bindung an die Funktion und den Aufruf der Funktion, sodass Funktionen in einem bestimmten Kontext aufgerufen werden können, insbesondere die Apply-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('click', this.onClick.bind(this), false); 
}; 
//this对象指向的是MyObject的实例 
MyObject.prototype.onClick = function(e) { 
var t=this; //do something with [t]... 
};
Nach dem Login kopieren

Ich glaube, Sie haben die Methode gemeistert, nachdem Sie den Fall in diesem Artikel gelesen haben Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

NodeJS-Betriebs-Excel-Datei

Wie man am unteren Rand der Folie unendlich viele Ladedatenanforderungen stellt Seite

Das obige ist der detaillierte Inhalt vonDaran ist der Aufrufmodus gebunden. 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