Heim  >  Artikel  >  Web-Frontend  >  Einführung in die Methode „prototyp.bind()“ in JavaScript_Grundkenntnisse

Einführung in die Methode „prototyp.bind()“ in JavaScript_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:53:201203Durchsuche

In der Vergangenheit konnten Sie möglicherweise direkt self=this oder that=this usw. setzen, was natürlich funktionieren würde, aber die Verwendung von Function.prototype.bind() wäre besser und würde professioneller aussehen.
Hier ist ein einfaches Beispiel:

Code kopieren Der Code lautet wie folgt:

var myObj = {
specialFunction: function () {
},
anotherSpecialFunction: function () {
},
getAsyncData: function (cb) {
cb();
},
render: function () {
var that = this;
this.getAsyncData(function () {
that.specialFunction();
that.anotherSpecialFunction();
});
}; .prototype wird nicht verwendet. .bind() sieht übersichtlicher aus:



Code kopieren
Der Code lautet wie folgt: render: function () { this.getAsyncData(function () { this.specialFunction();
this.anotherSpecialFunction();
}.bind(this));
}



Beim Aufruf von .bind() wird einfach eine neue Funktion erstellt und diese an diese Funktion übergeben. Der Code zum Implementieren von .bind() sieht ungefähr so ​​aus:

Kopieren Sie den Code

Der Code lautet wie folgt:Function.prototype .bind = function (scope) { var fn = this; return function () { return fn.apply(scope);
};
}



Sehen wir uns ein einfaches Beispiel für die Verwendung von Function.prototype.bind() an:

Code kopieren

Der Code lautet wie folgt:var foo = { x: 3};
var bar = function(){
console.log(this.x);
};

bar(); // undefiniert

varboundFunc = bar.bind(foo);

boundFunc(); // 3



Ist es nicht sehr nützlich? Leider unterstützen die IE-Browser IE8 und niedriger Function.prototype.bind() nicht. Unterstützte Browser sind Chrome 7, Firefox 4.0, IE 9, Opera 11.60, Safari 5.1.4. Obwohl Browser wie IE 8/7/6 dies nicht unterstützen, hat das Mozilla-Entwicklungsteam eine Funktion mit ähnlichen Funktionen für ältere Versionen von IE-Browsern geschrieben. Der Code lautet wie folgt:

Kopieren Sie den Code

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