ホームページ  >  記事  >  ウェブフロントエンド  >  jsで不変オブジェクトを作成する方法

jsで不変オブジェクトを作成する方法

王林
王林転載
2020-05-19 09:16:032754ブラウズ

jsで不変オブジェクトを作成する方法

オブジェクトの不変性とは、オブジェクトの作成後 (オブジェクトを読み取り専用型に設定する)、オブジェクトを一切変更したくないことを意味します。

車のオブジェクトを定義し、プロジェクト全体でそのプロパティを使用して操作を実行する必要があるとします。データが誤って変更されることは許されません。

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

Object.preventExtensions() 拡張機能の防止

このメソッドは、既存のオブジェクトに新しいプロパティを追加できません。preventExtensions() は元に戻せない操作であり、追加のプロパティを追加することはできません。オブジェクトに。

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

Object.seal() seal

属性の追加または削除を防ぐことができます。seal() は属性記述子の変更も防ぐことができます。

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() Freeze

これは Object.seal() と同じ効果があり、プロパティを書き込み不能にします。

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

注: 不変オブジェクトを変更しようとしたときにエラーをスローしたい場合は、厳密モードを使用してください。

推奨チュートリアル: js 入門チュートリアル

以上がjsで不変オブジェクトを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。