物件導向 屬性

2021-10-01 01:53:28 字數 2008 閱讀 5143

資料屬性

[[configurable]]:能否通過delete刪除屬性而重新定義屬性,或能否把屬性修改為訪問器屬性。預設為:true。

[[enumerable]]:能否通過for-in迴圈返回屬性。預設為:true。

[[writable]]:能否修改屬性的值。預設為:true。

[[value]]:包含這個屬性的資料值。讀取屬性值時從這個位置讀;寫入時,把新值從這個地方儲存。這個特性預設:undefind;

訪問器屬性

getter

讀取訪問器屬性時,呼叫getter,負責返回有效的值。

setter

寫入訪問器屬性時,呼叫setter傳入新值,負責如何處理資料

有四個特性

[[configurable]]:能否通過delete刪除屬性而重新定義屬性,或能否把屬性修改為訪問器屬性。預設為:true。

[[enumerable]]:能否通過for-in迴圈返回屬性。預設為:true。

[[get]]:在讀取屬性時呼叫的函式。預設:undefined;

[[set]]:寫入屬性時呼叫的函式。預設:undefined;

var book=;

object.defineproperty(book,"year",,

set:function(newvalue)

}});

book.year=3004;

console.log(book.edition);//3

_year 前的下劃線是一種常用的記號,表明只能通過物件方法訪問的屬性。

方法object.defineproperty(屬性所在的物件,屬性的名字,乙個描述符物件)

(描述符物件是上面四個其中乙個)

var person={};

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

console.log(person.name);//xiaoming

person.name="xiaohong";

console.log(person.name);//xiaoming 嚴格模式下賦值操作會報錯

object.defineproperties()
var book={};

object.defineproperties(book,,

edition:,

year:,

set:function(newvalue)}}

});book.year=2005;

console.log(book.edition);//2

呼叫方法建立新屬性的時候,如果不指定,前三個屬性都是false。如果只是呼叫方法修改已經定義的屬性,則無限制。

object.getownpropertydescriptor(物件,讀取其描述符的屬性名稱);

訪問器屬性:參考訪問器屬性

資料屬性:參考前資料屬性。

var book={};

object.defineproperties(book,,

edition:,

year:,

set:function(newvalue)}}

});var descriptor=object.getownpropertydescriptor(book,"_year");

console.log(descriptor.value);//2004

console.log(descriptor.configurable);//false

console.log(typeof descriptor.get)//undefined

var descriptor=object.getownpropertydescriptor(book,"year");

console.log(descriptor.value);//undefined

console.log(typeof descriptor.get);//function

物件導向基礎 屬性

談到屬性,不妨先聊聊屬性和字段的區別。屬性 是提供給類的外部呼叫時用的。get表示可讀 set表示可寫 字段 類的內部用於儲存資料用的。先記住一句話 習慣用法,屬性開頭字母大寫,字段開頭字母小寫!using system using system.collections.generic using ...

Python物件導向 屬性

1 建立用於計算的屬性 1.1 說明 1 在python中,可以通過 property 裝飾器 將乙個方法轉換為屬性,從而實現用於計算的屬性。2 把方法轉化為屬性後,可以直接通過方法名來訪問方法,而不需要再新增一對小括號 讓 更加簡潔。3 通過 property 裝飾器 轉換後的屬性不能重新賦值,否...

物件導向(屬性型別)

修改屬性預設值使用object.defineproperty 接收三個引數,屬性所在的物件,屬性的名字和乙個描述符物件 描述符物件必須為configurable enumerable writable value var person object.defineproperty person,nam...