ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのデータ属性とメモリ属性notes_javascriptスキル

JavaScriptのデータ属性とメモリ属性notes_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 15:07:081460ブラウズ

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 データ属性のストレージ属性について説明します。お役に立てば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。