一些時候可能需要對某些物件屬性進行某些設定,比如禁止遍歷,修改,刪除。js物件中有三個特徵可以幫助實現這些需求。
獲取屬性四類特徵
object.getownpropertydescriptor(obj, attr); // 傳遞物件和此物件下的屬性
這個方法返回乙個物件,裡面包括以下四個屬性,對應著四大特徵。
屬性意義
configurable
是否可被刪除 預設true
enumerable
是否可被for in 遍歷 預設true
value
當前屬性的值
writable
是否可被修改 預設true
根據需求設定四個屬性
設定特徵
使用configurable屬性,設定物件屬性的特徵方法為
object.defineproperty(obj, attr, {}); 傳遞三個引數,依次是當前物件,當前需要設定的屬性,需要設定的特徵物件
單個屬性的設定var stu =
// 單個設定 設定物件stu的屬性sid的特徵
object.defineproperty(stu, 'sid', );
經過這樣設定,物件stu的sid屬性就是不可被修改的,不可被刪除的,不可被迴圈遍歷的。
可以測試一下
// 修改sid
stu.sid = 1002;
去瀏覽器控制台看結果是會報錯的,並且有個read only的關鍵字,這也就告訴我們是唯讀的。
想讓這段**報錯是得有個前提,**必須在嚴格模式下執行。
「use strict」; 開啟 嚴格模式, 寫在想要在嚴格模式下執行的**的最前面
開啟了嚴格模式,才會報錯。不開啟嚴格模式 ,不會報錯,但也修改不了屬性值。開啟嚴格模式結果更直觀。
三個屬性也可以根據需求單獨設定。
同時設定多個屬性
如果需要設定多個屬性的特徵,可以使用
object.defineproperties(); 多乙個s
var tea =
// 多個設定
object.defineproperties(tea, ,
'teanmae':
})
defineproperty設定不存在的屬性
使用defineproperty設定不存在的屬性名時將會給物件新增乙個屬性,特徵預設都是false。
var person =
object.defineproperty(person, 'hand', );
console.log(object.getownpropertydescriptor(person , 'hand'));
控制台列印
屬性的特徵就這麼寫些,以上操作可以稱之為保護屬性。
屬性可以被保護,那麼物件也是一樣
保護物件
物件的保護分為三個級別的保護。
不可拓展:表明此物件不能再新增屬性。
密封:表明次物件不可新增,不可刪除屬性。
凍結:表明次物件不可新增,不可刪除屬性,不可修改屬性。
1、不可拓展 preventextensions
"use strict"; // 接下來的所有報錯都處於嚴格模式下
var dog =
object.preventextensions(dog);
// dog.eyes = 2; // 報錯
dog.hair = "gray"; // 可以修改
delete dog.footer; // 可以刪除
2、 密封 sealvar car =
object.seal(car);
// delete car.name; // 報錯
// car.speed = 220; // 報錯
car.name = "audi"; // 可以修改
3、凍結 freezevar house =
object.freeze(house);
// delete house.area; // 報錯
// house.position = 3; // 報錯
// house.area = 150; // 報錯
js物件屬性的四個特徵
建立乙個物件 var obj object.getownpropertydescriptor 獲取某個物件特定屬性的屬性描述 ps 獲取不存在的屬性時會返回undefined var objid object.getownpropertydescriptor obj,id console.log o...
js物件屬性的四大特徵
建立物件 var arr configurable false,能否使用delete 能否需改屬性特性 或能否修改訪問器屬性 false為不可重新定義,預設值為true enumerable false,物件屬性是否可通過for in迴圈,flase為不可迴圈,預設值為true writable f...
資料的四個特徵
我們總是在談資料分析,那麼到底什麼是資料,資料有什麼特徵呢?這個問題雖基礎卻重要。這裡我們所說的資料,僅指應用於企業運營的市場資訊。它是認識事物的中間環節,是事物的表面特徵,其作用在於消除事物的不確定性。它至少具有以下四個基本特徵。一 時效性 所謂時效性是指資料的發生和運用要有個提前期,失去時效性,...