js物件 屬性的四個特徵

2021-10-07 10:26:21 字數 2413 閱讀 2665

一些時候可能需要對某些物件屬性進行某些設定,比如禁止遍歷,修改,刪除。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、 密封 seal
var car = 

object.seal(car);

// delete car.name; // 報錯

// car.speed = 220; // 報錯

car.name = "audi"; // 可以修改

3、凍結 freeze
var 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...

資料的四個特徵

我們總是在談資料分析,那麼到底什麼是資料,資料有什麼特徵呢?這個問題雖基礎卻重要。這裡我們所說的資料,僅指應用於企業運營的市場資訊。它是認識事物的中間環節,是事物的表面特徵,其作用在於消除事物的不確定性。它至少具有以下四個基本特徵。一 時效性 所謂時效性是指資料的發生和運用要有個提前期,失去時效性,...