Gibt es einen Fehler beim Aufruf von Object.freeze
an einem Konstruktor-Prototyp in JavaScript?Irgendetwas stimmt nicht mit Object.freeze() auf einem JavaScript-Prototyp?
Ich dachte nur, dass, da der Prototyp unter alle Instanzen geteilt wird, ich vielleicht sicherstellen kann, dass niemand etwas im Prototyp durch Einfrieren überschreibt, da das Überschreiben von etwas auf dem Prototyp jede Instanz betrifft. So zum Beispiel, so etwas wie die folgenden:
function MyConstructor() {
// Stuff
}
MyConstructor.prototype = {
method1() {
// more stuff
},
method2() {
// even more stuff
},
someArray: ['some', 'values'],
someValue: 'value'
}
Object.freeze(MyConstructor.prototype);
Ja, Sie können diesen Eigenschaften nicht einfach zuweisen. Aber nein, die erbenden Objekte sind nicht eingefroren, und Sie können immer noch Schatteneigenschaften erstellen, indem Sie 'Object.defineProperty' verwenden. – Bergi
Wahr, aber der Punkt ist, dass das Einfrieren eines Prototyps, wenn Instanzen anderswo verwendet werden, alle Arten von Problemen verursachen kann. Es sei denn, Sie planen es vorher natürlich vorher. – alebianco