Ich habe dieses JavaScript:Wie wickle ich einen Konstruktor?
var Type = function(name) {
this.name = name;
};
var t = new Type();
Nun ist diese Ich möchte hinzufügen: ich tun kann
var wrap = function(cls) {
// ... wrap constructor of Type ...
this.extraField = 1;
};
So:
wrap(Type);
var t = new Type();
assertEquals(1, t.extraField);
[EDIT] Ich möchte ein Instanzeigenschaft, keine Klasseneigenschaft (statisch/gemeinsam).
Der in der Wrapper-Funktion ausgeführte Code sollte so funktionieren, als hätte ich ihn in den echten Konstruktor eingefügt.
Der Typ Type
sollte nicht geändert werden.
Mit dem was ich verstehe, möchten Sie dem Konstruktor eine zusätzliche Eigenschaft hinzufügen? so dass weitere neue Instanzen diese Eigenschaft haben? – Joseph
Möglicherweise müssen Sie einfach den Prototyp der 'Type' innerhalb der' wrap() 'Funktion ändern. Zum Beispiel: 'var wrap = Funktion (cls) {cls.prototype.extraField = 1; }; '? Oder ist es am besten, neue 'Type2' zu erstellen, die von' Type' mit einem zusätzlichen 'extraField'-Member geerbt werden? –
Können Sie Ihr Problem genauer beschreiben? – seteh