Angenommen, ich habe eine Klasse, die später einige Callbacks hinzufügen soll.Ist es effizienter, eine gemeinsame leere Funktion zu verwenden, anstatt eine neue in jeder Klasseninstanz zu erstellen?
function myclass() {
this.onSomething = function() {};
this.onOtherThing = function() {};
this.something = function() {
// stuff
this.onSomething();
};
this.otherThing = function() {
// other stuff
this.onOtherThing();
};
}
kann ich nicht this.onSomething
und this.onOtherThing
undefined
oder null
zu sein, weil, wenn sie in something()
und otherThing()
genannt werden, wird ein Fehler ausgelöst werden, die besagt, dass ihre Art nicht eine Funktion ist.
Da diese leeren Funktionen benötigt werden, aber sie Speicher verwenden, wird die Klasse effizienter, wenn ich das mache?
function myclass() {
this.onSomething = empty;
this.onOtherThing = empty;
...
}
function empty() {
}
Auf diese Weise zeigen die Eigenschaften jeder Klasseninstanz auf dieselbe leere Funktion, anstatt jedes Mal neue Funktionen zu erstellen. Ich nehme an, dass das Definieren einer leeren Methode nicht viel Speicher erfordert, aber trotzdem ... ist das technisch besser?
Weil, wenn 'something()' 'this.onSomething' aufruft, wird es einen Fehler werfen:' Uncaught TypeError: false ist keine Funktion' –
okay. Du kannst versuchen 'function myclass() { this.onSomething = empty(); this.onOtherThing = leer(); ... } Funktion leer() { // zurück etwas zurück wahr; } ' – candidJ
Wieder. 'empty()' gibt 'true' zurück, also' this.onSomething = empty(); 'bedeutet' this.onSomething' ist 'true'. Wenn 'something()' 'this.onSomething' aufruft, bekomme ich' Uncaught TypeError: this.onSomething ist keine Funktion' da ... es ist ein boolscher Wert und keine tatsächliche Funktion. –