Warum javascript binden funktioniert nicht
Funktion:
function talk(){
console.log(this.name + " dice: ");
}
var Person = function(name, surname){
this.name = name;
this.surname = surname;
}
var p = new Person("Mark", "Red");
talk.bind(p);
was ist falsch mit dem binden?
- Wert hinzufügen, für alle, die nach dieser Frage, dass Sie "one-time" - Bindung durch die Verwendung einer Funktion
call
oderapply
Methode. Also eine andere Lösung für das oben genannte Problem ist zu ersetzen.bind
mit.call
(hiertalk.call(p)
).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es funktioniert, zu sprechen.bind(p) gibt die gebundene Funktion:
talk.bind(p)();
Ist nichts falsch mit
bind()
- es ist einfach nicht richtig eingesetzt.bind()
gibt eine neue Funktion, die gebunden ist an das angegebene Objekt. Sie müssen noch die execute-Funktion:Es ist nichts falsch mit
bind
, es gibt eine Funktion, die gebunden ist, um das Objekt als argument übergeben wird. So müssen Sie es aufrufen, wie diesWie von anderen erwähnt, binden, scheint zu funktionieren wie erwartet, aber es Bedarf aufrufen.
Andere Lösung, die ist ein bisschen sauberer, vor allem, wenn jeder 'Person' - Objekt benötigt die Fähigkeit zu sprechen, wäre die Funktion in den person-Konstruktor:
Sehen diese Geige: http://jsfiddle.net/amspianist/J5BSh/