JavaScript中,對象包括3個特性,分別為,可擴展性,class標識符,屬性。
如果對象的可擴展性為false,則不可為對象動態的添加屬性。
對象包含分為存取器屬性和值屬性。存取屬性為 {get r(){/*函數實現*/},set r(){/*函數實現*/}} 存取器屬性自身不能保存值,set相當於對對象中其他的屬性進行更改。get中也可以返回其他屬性的值。屬性的特性值為 可寫性,可配置性,value,可枚舉性。存取器屬性使用get,set屬性來替換可寫性和value.
在沒有實現ES5的瀏覽器中,使用__lookupGetter____lookupSetter__,方法第一個參數為屬性名,第二個參數為function
來查看get set屬性 通過 __lookupGetter__('x')__ 參數為屬性名
通過Object.getownpropertydescriptor(對象,屬性名) ,Object.defineProperty用此方法來添加屬性,可以配置特性值。如果屬性已存在,則修改特性值。Object.defineProperties 定義多個屬性(對象,{
屬性名:{特性值}
}) 一旦可配置性修改為false,則不可再次修改可配置性。其余特性修改有規則
可配置性為false,可寫行可有true修改為false.其余基本都是不可變的。
對象.isPrototypeOf(a)指定對象原形鏈上是否有a,和 instanceof工作原理一樣
對象.propertyIsEnumerable(屬性) 屬性是否為可枚舉
對象.hasOwnProperty(屬性) 屬性是否為自有屬性
in 關鍵詞可以檢測對象及其原形鏈上是否有某個屬性
var 聲明的變量不可以用delete刪除
可配置為false的屬性也不可以
