Heim  >  Artikel  >  Web-Frontend  >  Unterschiede in der Verwendung von apply, call und bind in Javascript_Grundkenntnisse

Unterschiede in der Verwendung von apply, call und bind in Javascript_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 15:06:351564Durchsuche

In JS werden diese drei verwendet, um den Sinn dieses Objekts der Funktion zu ändern.

Bevor wir über die Unterschiede sprechen, fassen wir die Gemeinsamkeiten zwischen den drei zusammen:

1. Sie werden alle verwendet, um den Punkt dieses Objekts der Funktion zu ändern.

2. Der erste Parameter ist das Objekt, auf das dies zeigt.

3. Sie können nachfolgende Parameter verwenden, um Parameter zu übergeben.

Was ist also der Unterschied zwischen ihnen? Schauen wir uns zunächst ein Beispiel an.

        var xw = {
            name : "小王",
            gender : "男",
            age : 24,
            say : function() {
                alert(this.name + " , " + this.gender + " ,今年" + this.age);                
            }
        }
        var xh = {
            name : "小红",
            gender : "女",
            age : 18
        }
        xw.say();

An sich gibt es nicht viel zu sagen. Der abgebildete muss dieses Jahr Xiao Wang sein, männlich, 24.
So verwenden Sie die Say-Methode von xw, um die Daten von xh anzuzeigen.
Für einen Anruf können Sie Folgendes tun:

1.xw.say.call(xh);

Um sich zu bewerben, können Sie Folgendes tun:

1.xw.say.apply(xh);

Und für bind muss es so sein:

1.xw.say.bind(xh)();

Wenn Sie xw.say.bind(xh) direkt schreiben, erhalten Sie keine Ergebnisse. Sehen Sie den Unterschied? Sowohl call als auch apply sind direkte Aufrufe von Funktionen, und die bind-Methode gibt immer noch eine Funktion zurück, sodass Sie sie später mit () aufrufen müssen.
Was ist also der Unterschied zwischen Anruf und Bewerbung? Schreiben wir das Beispiel ein wenig um.

        var xw = {
            name : "小王",
            gender : "男",
            age : 24,
            say : function(school,grade) {
                alert(this.name + " , " + this.gender + " ,今年" + this.age + " ,在" + school + "上" + grade);                
            }
        }
        var xh = {
            name : "小红",
            gender : "女",
            age : 18
        }

Sie können sehen, dass die Say-Methode zwei weitere Parameter hat. Wir übergeben die Parameter über die Call/Apply-Parameter.
Dies ist bei Anruf

der Fall

1.xw.say.call(xh,"Experimentelle Grundschule","Sechste Klasse"); 

Und für die Bewerbung ist es so

1.xw.say.apply(xh,["Experimental Primary School","Sixth Grade"]);

Sehen Sie den Unterschied? Die Parameter nach dem Aufruf entsprechen eins zu eins der Methode say, während der zweite Parameter von apply ein Array ist. Die Elemente im Array entsprechen eins zu eins der Methode say. Das ist der größte Unterschied zwischen den beiden.

Wie übergibt bind also Parameter? Es kann Parameter wie call übergeben.

1.xw.say.bind(xh,"Experimental Primary School","Sixth Grade")();

Da bind aber immer noch eine Funktion zurückgibt, können wir beim Aufruf auch Parameter übergeben.

1.xw.say.bind(xh)("Experimentelle Grundschule","Sechste Klasse");

Die Unterschiede in der Verwendung von Apply, Call und Bind im obigen Javascript sind alle vom Herausgeber geteilten Inhalte. Ich hoffe, dass es Ihnen eine Referenz geben kann, und ich hoffe, dass Sie Script Home unterstützen.

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