ich eine Funktion Konstruktor haben, die mit einer Funktion ein Objekt erstellt, sagen wir, do_it
:Clone JavaScript-Funktion
function do_it_maker() {
this.do_it = function() { /* do something */ };
this.other_do = function() { /* do anything else */ };
}
Und ich möchte einen Wrapper für ein do_it_maker
Objekt erstellen, das do_it
Verhalten durch parasitäre Erbe bereichern:
Meine Frage ist, wird der do_it_obj.do_it()
Aufruf einen rekursiven Aufruf verursachen? oder die Referenz auf die ursprüngliche do_it
Funktion ist noch am Leben?
Ich habe verwandte Fragen hier in StackOverflow gefunden, aber ich habe widersprüchliche Antwort darüber gelesen, ob die Methode geklont werden muss oder nicht.
Also, was wird passieren? Für den Fall, dass die Referenz rekursiv wird nach der Änderung do_it
, die am verständlichsten und mit der geringsten Menge an Code erforderlich ist, um diese Methode zu klonen? Ich bin ein C++ und nicht-glücklich-mit-nur-kopieren-einfügen-Code-Typ und einige Javascript-Funktionen aussehen mir noch dunkel (ich bin nicht klumpig, aber Sie können es ein bisschen schwer).
Was ist 'self'? Das scheint nicht zu funktionieren. – Bergi
Sie sollten den 'new'-Operator nicht verwenden, wenn Ihre Factory 'Objekte zurückgibt' trotzdem. – Bergi
Hast du es gerade ausprobiert? Es sollte ziemlich einfach sein herauszufinden, ob der Aufruf rekursiv ist (und stackoverflows) oder ob die übergeordnete Methode wie erwartet aufgerufen wird. – Bergi