Heim > Web-Frontend > js-Tutorial > Hauptteil

Einführung in erweiterbare Eigenschaften von Objekten in JavaScript_Javascript-Kenntnissen

WBOY
Freigeben: 2016-05-16 16:23:18
Original
1180 Leute haben es durchsucht

In JavaScript wird das erweiterbare Attribut eines Objekts verwendet, um anzugeben, ob dem Objekt neue Eigenschaften dynamisch hinzugefügt werden dürfen. Im ECMAScript 3-Standard sind alle Objekte erweiterbar. Im ECMAScript 5-Standard sind alle Objekte weiterhin standardmäßig erweiterbar, dieses Attribut kann jedoch durch Setzen geändert werden.

Um abzufragen, ob ein Objekt erweiterbar ist, können Sie die Object.isExtensible()-Anweisung verwenden:


Code kopieren Der Code lautet wie folgt:

var o = {x:1};
console.log(Object.isExtensible(o));//true


Um ein Objekt nicht erweiterbar zu machen, können Sie die Anweisung Object.preventExtensions() verwenden:


Code kopieren Der Code lautet wie folgt:

Object.preventExtensions(o)
console.log(Object.isExtensible(o));//false


Es ist erwähnenswert, dass es keine Möglichkeit gibt, ein Objekt wieder auf erweiterbar zu setzen, sobald es auf „nicht erweiterbar“ gesetzt ist, da es keine umgekehrte Operationsanweisung von Object.preventExtensions() gibt.

Der Geltungsbereich der Object.preventExtensions()-Anweisung ist das Objekt selbst und das Prototypobjekt ist nicht betroffen. Wenn ein Objekt als nicht erweiterbar festgelegt ist, können seinem Prototypobjekt weiterhin Eigenschaften dynamisch hinzugefügt werden, und diese dynamisch hinzugefügten Eigenschaften können weiterhin vom Objekt geerbt werden.

Object.seal() und Object.freeze()

Object.preventExtensions() kann verhindern, dass neue Eigenschaften dynamisch zum Objekt hinzugefügt werden. Zusätzlich zu dieser Operation gibt es in JavaScript zwei weitere strengere Operationen zum Schutz von Objekten: Object.seal() und Object.freeze().

Die Funktion von Object.seal() besteht darin, die konfigurierbare Eigenschaft aller objekteigenen Eigenschaften basierend auf Object.preventExtensions() auf false zu setzen. Wie die Object.preventExtensions()-Operation verfügt auch Object.seal() über keine umgekehrte Operation. Sobald das Objekt versiegelt ist, kann sein Zustand nicht wiederhergestellt werden. In JavaScript können Sie mit Object.isSealed() abfragen, ob ein Objekt versiegelt wurde.

Die Funktion von Object.freeze() besteht darin, die Eigenschaften aller Objekte selbst basierend auf Object.seal() auf schreibgeschützt zu setzen. Wie die Operationen Object.seal() und Object.preventExtensions() verfügt auch Object.freeze() über keine umgekehrte Operation, sodass sein Zustand nach dem Einfrieren des Objekts nicht wiederhergestellt werden kann. In JavaScript können Sie mit Object.isFrozen() abfragen, ob ein Objekt eingefroren wurde.


Code kopieren Der Code lautet wie folgt:

console.log(Object.isSealed(o));//false
Object.seal(o);
console.log(Object.isSealed(o));//true
console.log(Object.isFrozen(o));//false
Object.freeze(o);
console.log(Object.isFrozen(o));//true


Unabhängig davon, ob es sich um Object.preventExtensions (), Object.seal () oder Object.freeze () handelt, ist sein Geltungsbereich das Objekt selbst, und das Prototypobjekt des Objekts wird nicht beeinträchtigt.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage