Eigentlich ist es eine sehr einfache Sache. Lies zehn Minuten lang aufmerksam, und du wirst von völliger Verwirrung zu vollständigem Verständnis gelangen!

Verstehe zunächst Folgendes:

Beispiel 1

obj.objAge;  // 17
obj.myFun()  // 小张年龄 undefined

Beispiel 2

shows()  // 盲僧 

Vergleiche den Unterschied bei `this` zwischen den beiden. Im ersten zeigt `this` in der gedruckten Ausgabe auf `obj`; im zweiten hat die global deklarierte Funktion `shows()` `this` als `window`;

1. `call()`, `apply()` und `bind()` werden alle verwendet, um das `this`-Objekt neu zu definieren!

Zum Beispiel:

obj.myFun.call(db);    // 德玛年龄 99
obj.myFun.apply(db);    // 德玛年龄 99
obj.myFun.bind(db)();   // 德玛年龄 99

Abgesehen von den zusätzlichen `()` nach der `bind`-Methode sind die zurückgegebenen Ergebnisse alle gleich!

Daraus können wir schließen, dass `bind` eine neue Funktion zurückgibt, und man muss sie aufrufen, damit sie ausgeführt wird.

2. Vergleich von `call`, `bind` und `apply` bei der Übergabe von Parametern

 
obj.myFun.call(db,'成都','上海');     // 德玛 年龄 99  来自 成都去往上海
obj.myFun.apply(db,['成都','上海']);      // 德玛 年龄 99  来自 成都去往上海  
obj.myFun.bind(db,'成都','上海')();       // 德玛 年龄 99  来自 成都去往上海
obj.myFun.bind(db,['成都','上海'])();   // 德玛 年龄 99  来自 成都, 上海去往 undefined
  

Ein subtiler Unterschied!

Man kann den vier obigen Ergebnissen leicht entnehmen:

Der erste Parameter von `call`, `bind` und `apply` ist das Objekt, auf das `this` verweist. Der Unterschied liegt beim zweiten Parameter:

Die Parameter von `call` werden direkt übergeben. Der zweite, dritte und n-te Parameter werden alle durch Kommas getrennt und direkt dahinter gesetzt.obj.myFun.call(db,'Chengdu', ... ,'string' )。

Alle Parameter von `apply` müssen in ein Array gepackt und übergeben werden.obj.myFun.apply(db,['Chengdu', ..., 'string' ])。

Neben der Rückgabe einer Funktion nimmt `bind` Parameter auf dieselbe Weise entgegen wie `call`.

Natürlich sind die Parameter dieser drei nicht auf den Typ `string` beschränkt. Sie können verschiedene Typen haben, darunter Funktionen, Objekte und so weiter!

Originaladresse: https://www.cnblogs.com/Shd-Study/p/6560808.html