js中物件屬性的整理

2021-09-14 02:06:57 字數 1545 閱讀 6792

都知道js是物件導向的,建立了物件後,物件中儲存的就是一組組名值對,值可以是資料型別或函式。不管函式還是資料,都可以稱為某某物件的屬性。再細分,屬性可以有兩個型別:資料屬性或訪問器屬性。

因此,資料屬性不要誤解為是資料的屬性型別,函式的屬性型別也是資料屬性的。

var obj = ,age:11};

console.log(object.getownpropertydescriptors(obj));

//輸出

資料屬性(4個):

value: 大家熟知的一樣,儲存的是資料值,如果是函式,保留的就是整個函式。

writable: 是否可修改,設定為false可以巧妙定義出"私有變數"。true表示可修改,false則相反。

enumerable: 該屬性是否可被列舉出。true表示可列舉,false則相反。

configurable: delete屬性有沒有用,能否修改value和enumerable屬性,能否把屬性改為訪問器屬性。true就是都可以,false就是都不可以。

訪問器屬性(4個):

configurable:同上

enumerable: 同上

get:乙個用於訪問其他屬性值的函式

set:乙個用於修改其他屬性值的函式

對於這些屬性型別,可以修改,用defineproperty()或defineproperties();可以讀取,用getownpropertydescriptor()或getownpropertydescriptors()。當然,訪問器屬性只能用defineproperty()或defineproperties()建立。

一些細節:

var obj = ,age:11};

object.defineproperty(obj,"name",{});

console.log(object.getownpropertydescriptors(obj));

//輸出結果如下:

//age:

//name:

//say:

可以看出,函式say是有value的資料屬性;age是建立物件時定義的,所有屬性特性都是true;name是用defineproperty()定義的,預設為資料屬性,所有屬性特性預設為false。

var obj = ;

object.defineproperty(obj,"age",);

object.defineproperty(obj,"age",);

object.defineproperty(obj,"name",);

object.defineproperty(obj,"name",);

建立時定義的屬性:修改了configurable後,其實還是可以修改writable和value屬性的。

defineproperty()定義的屬性:configurable一旦是false,以後就不可能在更改任何屬性。

訪問器屬性暫時想到的,就是通過改變該屬性改變內部多個屬性。而且,如果某屬性writable是false,訪問器屬性改變該屬性會無效。

js 陣列物件的屬性方法整理

建立與運算元組 1 陣列建立的三種方法 var arr new array 建立空陣列,未指定長度。var arr new arry 4 建立陣列,長度為4 var arr new arry 1,2,3,a b 建立陣列,並初始化。陣列其實是動態的,可以自由延伸。2 自定義陣列建構函式並建立陣列 需...

js 中物件屬性的特性

資料屬性 資料屬性包含乙個資料值的位置,在這個位置可以讀取和寫入值。4個描述的行為特性 writable 表示能否修改屬性的值。預設為true enumerable 表示能否過過for in迴圈返回屬性是否可以列舉。configuralbe 表示是否能過來delete刪除屬性從來重新定義屬性,能否修...

js物件中取屬性值物件 屬性和物件 屬性 的區別

物件的屬性和方法統稱為物件的成員。首先,我們知道 js物件中取屬性值 和 的區別 一般作為靜態物件使用時來訪問屬性。而 表示法在動態訪問屬性時就非常有用。如 var object var name1 object.name var name2 object name 區別 相同點 都可以獲取到obj...