Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Verwendung von Apply und Call in js (mit Code)

Detaillierte Erläuterung der Verwendung von Apply und Call in js (mit Code)

php中世界最好的语言
php中世界最好的语言Original
2018-04-16 09:30:321388Durchsuche

Dieses Mal werde ich Ihnen eine detaillierte Erklärung zur Verwendung von apply und call in js (mit Code) geben. Was sind die Vorsichtsmaßnahmen für die Verwendung von apply und call in js? Praktischer Fall, werfen wir einen Blick darauf.

Sie können sich die Beispiele direkt ansehen, oder Sie lesen zuerst die Einleitung:

call und apply erscheinen für , um dies dynamisch zu ändern Wenn ein Objekt keine bestimmte Methode hat, andere jedoch schon, können wir call oder apply verwenden, um mit den Methoden anderer -Objekte zu arbeiten .

call und apply sind beide Methoden von Function.prototype, die intern von der JavaScript-Engine implementiert werden. Da sie zu Function.prototype gehören, hat jede Function-Objektinstanz, , eine call, apply Da es sich um Attribute von Methoden handelt, sind diese beiden Methoden natürlich leicht zu verwechseln, da sie den gleichen Effekt haben, aber unterschiedlich verwendet werden .Aus dem oben Gesagten lässt sich schließen, dass
call, apply für Methoden verwendet wird, um diesen Zeiger der aufrufenden Methode zu ändern

Einfaches Beispiel:

Anruf

function A() {
  this.getName = function (xx) {
    return xx;
  }
}
function B() {
}
var a = new A();
console.log( a.getName('i am A') ); //i am A
var b = new B() ;
console.log( a.getName.call(b,'i am B') ); // i am B
Es gibt keine Methode in der B-Funktion und die A-Funktion verfügt natürlich über eine getName()-Methode, aber was soll ich tun, wenn B auch die getName()-Methode verwenden muss? Dann verwenden Sie call(this,'parameter')! !

Sie können diesen Satz noch einmal verstehen – wir können call oder apply verwenden, um die Methoden anderer Objekte aufzurufen, um dies dynamisch zu ändern. , ursprünglich zeigt a.getName() auf a, call verweist dynamisch auf b und wird zu b.getName()

Bewerben

apply und call unterscheiden sich lediglich in der Verwendung von Parametern

function A() {
  this.sun = function (a ,b) {
    return a+b;
  }
}
function B() {
}
var a = new A();
console.log( a.sun(1,2) ); //3
var b = new B() ;
console.log( a.sun.call(b,2,2) ); // 4
console.log( a.sun.apply(b,[3, 3]) ); //6

Allgemeine Verwendung von Call and Apply

Am häufigsten wird der über

document ausgewählte Dom-Knoten verwendet.getElementsByTagName ist ein Array-ähnliches Array. Unter Array können keine Push-, Pop- und andere Methoden angewendet werden. Wir können bestehen:

var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));
Auf diese Weise können domNodes alle Methoden unter Array anwenden.

Ich glaube, dass Sie die Methode beherrschen, 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:

CSS-Stile in Angular 4 anzeigen

Wie implementiert die Vue-Komponente die Funktion zum Erraten von Zahlen

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Apply und Call in js (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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