ホームページ > 記事 > ウェブフロントエンド > JavaScriptのデータ属性とメモリ属性notes_javascriptスキル
JavaScript では、オブジェクトのプロパティは、データ プロパティとメモリ プロパティの 2 つのタイプに分けられます。
2 つの属性の違い
まず 2 つの違いを直観的に感じるために、Object.defineProperty() を使用します。
Object.defineProperty()を使用してデータプロパティを設定する方法は以下のとおりです
var obj = {}; Object.defineProperty(obj, "prop", { value: 1, writable: true, //可写性 enumerable: true, //可枚举性 configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改 })
Object.defineProperty()を使用してメモリプロパティを設定する方法は以下のとおりです
var obj = {}; Object.defineProperty(obj, "prop", { get set enumerable: true, //可枚举性 configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改 })
上記の例から、memory 属性には value と writable の 2 つの属性がなく、set 属性と get 属性に置き換えられていることがわかります。
メモリのプロパティ
データ属性とメモリ属性の直感的な違いを見た後、見落とされやすい属性であるメモリ属性について詳しく見てみましょう (これは私 TT です)。
メモリ属性とデータ属性の最大の違いは、ゲッター/セッターが追加されていることです。これにより、属性の値を操作したり、いくつかの実用的な関数を実装したりできます。
//example1 function serialnum() { var n =1; var prop = null; Object.defineProperty(this, "n", { get: function() { return n; }, set: function(value) { if(value > n) n = value; else throw '请输入一个大于n的值'; } }) } var obj = new serialnum(); obj.n = 2; //2 obj.n = 0; //Uncaught 请输入一个大于n的值
上記の例では、set 関数を使用して n の値の範囲を制御しています。
ここではエディターが js データ属性のストレージ属性について説明します。お役に立てば幸いです。