1.屬性的設定和獲取
通過 . 操作符或者[ ]區別:. 操作符取自身的屬性,[ ]可以是變數
var o =
;o.name =
"緣滅"
;var aaa =
"name"
;console.
log(o[aaa]);
//緣滅
ps:一道比較坑的筆試題
var str =
"abc"
;str +=1;
var test =
typeof
(str);if
(test.length ==6)
console.
log(test.sign)
;//undefined
2.屬性的刪除delete命令用於刪除物件的屬性,刪除成功後返回true。刪不掉原型上的注意:刪除乙個不存在的屬性,delete不報錯,而且返回true。因此,不能根據delete命令的結果,認定某個屬性是存在的。
var obj =
;delete obj.p // true
obj.p // undefined
3.屬性的檢測in 或者 hasownproperty()方法
var o =
;o.name =
"緣滅"
;console.
log(
"name"
in o)
;//true
console.
log(o.
hasownproperty
("name"))
;//true
4.屬性的列舉for…in迴圈用來遍歷乙個物件的全部屬性。包括原型上的屬性,而且順序是不確定的
var obj =
;for
(var i in obj)
檢視乙個物件本身的所有屬性,也可以使用object.keys方法。
var obj =
;object.
keys
(obj)
;// ['key1', 'key2']
}
5.es中有兩種屬性:資料屬性和訪問器屬性資料屬性:修改預設屬性特性:object.defineproperty(屬性所在的物件,屬性名,描述符物件)[[configurable]]:表示能否通過delete刪除屬性,預設true
[[enumerable]]:表示能否通過for-in迴圈返回屬性,預設true
[[writable]]:表示能否修改屬性的值,預設true
[[value]]:包含這個屬性的資料值,預設undefined
var person =
;object.
defineproperty
(person,
"name",)
;alert
(person.name)
;//nicholas
person.name = "michael」;
//修改不成功,嚴格模式下會報錯
alert
(person.name)
;//nicholas
注意:一旦把屬性定義為不可配置,就不能再把他變回可配置了。此時再呼叫除writable之外的特性都會報錯。
訪問器屬性:必須使用 object.defineproperty(屬性所在的物件,屬性名,描述符物件) 定義訪問器屬性[[configurable]]:表示能否通過delete刪除屬性,預設true
[[enumerable]]:表示能否通過for-in迴圈返回屬性,預設true
[[get]]:讀取屬性時呼叫的函式,預設undefined
[[set]]:寫入屬性時呼叫的函式,預設undefined
var book =
;object.
defineproperty
(book,
"year",,
set:
function
(newvalue)}}
);book.year =
2006
;alert
(book.edition)
;//3
js物件導向之公有 私有 靜態屬性
示例 function 1.公有屬性和公有方法 function user name,age user.prototype.getname function var user newuser fire子海 26 console.log user.getname output fire子海 2.私有屬...
Python物件導向之屬性
任務 定義乙個 dog 類,在類中定義屬性 name 和 age 在類外部可以修改該 name 和 age 的值,值通過 input 獲取。請在下面的begin end之間按照注釋中給出的提示編寫正確的 begin class dog 第一步 定義屬性 definit self,name,age s...
python物件導向之屬性
property是一種特殊的屬性,訪問它時會執行一段功能 函式 然後返回值 class person def init self,name,height,weight self.name name self.height height self.weight weight property 裝飾,將...