Ich bin neu in Javascript. Wenn ich eine zielorientierte Programmierung habe, möchte ich Konstruktor der Superklasse in einer Unterklasse aufzurufen:`this` wird Fenster in Super-Konstruktor sogar mit` bind`
function P(p1, p2) {
alert(this);
this.v1 = p1;
this.v2 = p2;
}
var middleObj = function() {};
middleObj.prototype = P.prototype;
var C = function(p1, p2) {
P.bind(this, p1, p2);
P();
}
C.prototype = new middleObj();
C.prototype.constructor = C;
var objChild = new C(1,2);
alert(objChild instanceof P);
alert(objChild.v2);
Wenn ich rufe P() direkt in C(), dies wird zu window
, und ich kann verstehen, Das. Aber selbst wenn ich dies an C() anbinde, kann ich immer noch nicht den richtigen Wert von this
bekommen. Daher wird die zweite Warnung undefiniert angezeigt, da v2 nicht ordnungsgemäß initialisiert wird.
Wenn Sie mehr genau hinsehen, um die Antworten in der verknüpften dupetarget, sehen Sie, dass Sie verwenden immer den Rückgabewert von 'bind' (und erklären warum). –