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

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

王林
リリース: 2020-05-19 09:16:03
転載
2786 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート