資料屬性
[[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...