Ich versuche, aus nur Function.apply() in Javascript, ich habe Probleme zu verstehen, wie es die Array-Parameter analysiert, in der wir übergeben. Zum Beispielwie funktioniert Function.apply in Javascript
var update = function(name, profession){
this.name = name;
this.profession = profession;
}
var p1 = {
name : "bond",
profession : "actor"
}
console.log(p1.name, p1.profession); //outputs bond actor
jetzt können Eigenschaften gelten() -Methode
update.apply(p1, ["john", "developer"];
mit der Änderung p1 erste Argument ist, Wert für this
Zeiger und zweite Argument ist ein array
console.log(p1.name, p1.profession); //outputs john developer
Die Funktion update()
nimmt zwei Parameter Namen und Beruf, aber ich bin nur in einem array
Parameter ["john", "developer"]
, um es durch apply()
Methode übergeben. Ich verstehe nicht, wie meine update()
Methode die Eigenschaften aus dem übergebenen Array korrekt erfasst und jede Eigenschaft entsprechend aktualisiert. Danke
Sein zu ES6 ähnlich funktioniert [Verbreitung] (https : //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator). Das erste Argument ist Ihr Kontext oder "das", wie Sie in seiner Gesamtheit sagten. Das zweite Array wird erweitert, sodass jedes Argument im Array beim Aufruf der Funktion ein separater Funktionsparameter wird. – ste2425
Warum würde es eine Rolle spielen * wie * 'apply' das macht? Es ist genau das, was "apply" tun sollte, und Sie scheinen zu wissen, dass es das tut, also, was ist das Problem? – Bergi
@Bergi Nach dem Beispiel-Code zu urteilen, gibt es Verwirrung, dass das OP denkt, dass die beiden in irgendeiner Weise verbunden sind. Sie übergeben Context und Argumente mit apply, aber setzen dann in der 'update' Methode die Context-Eigenschaften so, als ob es irgendeine Art von Konstruktor wäre. Beide Ansätze werden nicht gleichzeitig benötigt. Sie haben den gleichen Effekt wie auch immer. – ste2425