首頁 > web前端 > js教程 > 主體

JavaScript筆記之資料屬性與記憶體屬性_javascript技巧

WBOY
發布: 2016-05-16 15:07:08
原創
1471 人瀏覽過

在javascript中,物件的屬性分為資料屬性與記憶體屬性兩種:

兩種屬性的差別

我們使用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属性是否可以被修改
})
登入後複製

從上面的範例中,我們觀察到記憶體屬性並沒有value和writable兩個屬性,取而代之的是set和get屬性。

記憶體屬性

看完了資料屬性和記憶體屬性直覺上的差異,我們詳細看一看記憶體屬性這個容易會被忽略(說的就是我TT)的屬性。

記憶體屬性與資料屬性最大的不同就是增加了getter/setter,透過它們可以對屬性的值進行操作,可以實現一些實用的功能。

//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資料屬性儲存屬性小編就跟大家介紹到這裡,希望對大家有幫助!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板