Heim  >  Artikel  >  Web-Frontend  >  So erstellen Sie unveränderliche Objekte in js

So erstellen Sie unveränderliche Objekte in js

王林
王林nach vorne
2020-05-19 09:16:032743Durchsuche

So erstellen Sie unveränderliche Objekte in js

Unveränderlichkeit von Objekten bedeutet, dass wir nicht möchten, dass sich die Objekte nach ihrer Erstellung in irgendeiner Weise ändern (wodurch sie schreibgeschützt werden).

Angenommen, wir müssen ein Autoobjekt definieren und seine Eigenschaften im gesamten Projekt verwenden, um Vorgänge auszuführen. Wir können nicht zulassen, dass Daten fehlerhaft geändert werden.

const myTesla = {
 maxSpeed: 155,
 batteryLife: 300,
 weight: 2300
};

Object.preventExtensions() Erweiterungen verhindern

Diese Methode verhindert das Hinzufügen neuer Eigenschaften zu vorhandenen Objekten. PreventExtensions() ist ein irreversibler Vorgang, wir können niemals zusätzliche Eigenschaften hinzufügen zum Objekt.

Object.isExtensible(myTesla); // true
Object.preventExtensions(myTesla);
Object.isExtensible(myTesla); // false
myTesla.color = 'blue';
console.log(myTesla.color) // undefined

Object.seal() versiegelt

Es kann das Hinzufügen oder Entfernen von Attributen verhindern, seal() kann auch die Änderung von Attributdeskriptoren verhindern.

Object.isSealed(myTesla); // false
Object.seal(myTesla);
Object.isSealed(myTesla); // true

myTesla.color = 'blue';
console.log(myTesla.color); // undefined

delete myTesla.batteryLife; // false
console.log(myTesla.batteryLife); // 300

Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife

Object.freeze() friert ein

Es hat den gleichen Effekt wie Object.seal(), macht die Eigenschaft jedoch nicht beschreibbar.

Object.isFrozen(myTesla); // false
Object.freeze(myTesla);
Object.isFrozen(myTesla); // true

myTesla.color = 'blue';
console.log(myTesla.color); // undefined

delete myTesla.batteryLife;
console.log(myTesla.batteryLife); // 300

Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife

myTesla.batteryLife = 400;
console.log(myTesla.batteryLife); // 300

Hinweis: Wenn Sie möchten, dass beim Versuch, ein unveränderliches Objekt zu ändern, ein Fehler ausgegeben wird, verwenden Sie den strikten Modus.

Empfohlenes Tutorial: js-Einführungs-Tutorial

Das obige ist der detaillierte Inhalt vonSo erstellen Sie unveränderliche Objekte in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen