Heim > Web-Frontend > js-Tutorial > Zusammenfassung der Verwendung der Bind-Methode in ECMAScript5 (ES5)_Grundkenntnisse

Zusammenfassung der Verwendung der Bind-Methode in ECMAScript5 (ES5)_Grundkenntnisse

WBOY
Freigeben: 2016-05-16 16:00:33
Original
1144 Leute haben es durchsucht

Ich habe mich in Bezug auf Dinge, die damit zusammenhängen, wie Anruf, Bewerbung usw., immer vage ausgedrückt. Dieses Mal habe ich eine schriftliche Testfrage zum Thema Bindung gesehen, daher habe ich diesen Artikel zur Erinnerung geschrieben.

 Bind kann wie call und apply das ändern, auf das der Kontext zeigt. Der Unterschied besteht darin, dass sich call wie apply direkt auf die Methode bezieht, während bind nach dem Binden eine Methode zurückgibt, der interne Kern jedoch immer noch apply ist.

Schauen Sie sich direkt das Beispiel an:

Code kopieren Der Code lautet wie folgt:

var obj = {
a: 1,
b: 2,
getCount: function(c, d) {
Geben Sie this.a this.b c d;
zurück }
};

window.a = window.b = 0;
console.log(obj.getCount(3, 4)); // 10
var func = obj.getCount;
console.log(func(3, 4)); // 7

Warum passiert das? Weil dies im Kontext von func window ist! Die Existenz von bind besteht darin, diesen Zeiger zu ändern, um den gewünschten Wert zu erhalten:

Code kopieren Der Code lautet wie folgt:

var obj = {
a: 1,
b: 2,
getCount: function(c, d) {
Geben Sie this.a this.b c d;
zurück }
};

window.a = window.b = 0;
var func = obj.getCount.bind(obj);
console.log(func(3, 4)); // 10

Bind ist eine Funktionserweiterungsmethode der Funktion. Nach dem Binden bindet der Code diesen Zeiger (obj) innerhalb von func erneut, ist jedoch nicht mit ie6~8 kompatibel. Der kompatible Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:

var obj = {
a: 1,
b: 2,
getCount: function(c, d) {
Geben Sie this.a this.b c d;
zurück }
};

Function.prototype.bind = Function.prototype.bind ||. function(context) {
var that = this;
return function() {
// console.log(arguments); // console [3,4] if ie<6-8>
Geben Sie that.apply(context, arguments);
zurück
}
}
window.a = window.b = 0;
var func = obj.getCount.bind(obj);
console.log(func(3, 4)); // 10

Tatsächlich besteht meiner Meinung nach der Kern von bind darin, eine nicht ausgeführte Methode zurückzugeben. Wenn Sie apply verwenden oder direkt aufrufen:

Code kopieren Der Code lautet wie folgt:

var ans = obj.getCount.apply(obj, [3, 4]);
console.log(ans); // 10

Es ist nicht möglich, den abgekürzten Funktionskonstruktor func zu verwenden. Verwenden Sie daher bind, um diesen Zeiger zu übergeben und dann eine nicht ausgeführte Methode zurückzugeben. Die Implementierung ist recht clever.
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