在js的繼承中,屬性的賦值操作首先是檢查原型鏈,以此來判斷是否允許賦值操作。如果o繼承自乙個唯讀屬性x,那麼賦值操作是不允許的。如果允許賦值操作,他也是總在原始物件上建立屬性,或者對已有的屬性賦值,而不會去修改原型鏈。即在js中石油在查詢屬性時才會體會到繼承的存在,而設定屬性則和繼承無關,借用隨手記03中的createobjetc函式
舉個栗子
var a =
var b = object.create(a)
b.x=1
b.y=1
b.r=3
b//object
a.r//1
屬性賦值要麼失敗,要麼建立乙個屬性,要麼在原始物件中設定屬性,但是有乙個意外
屬性的刪除
delete只是斷開屬性和物件的聯絡,而不會去操作屬性中的屬性
delete 只能刪除自有屬性,不能刪除繼承屬性(要刪除繼承屬性必須從定義這個屬性的原型物件上刪除它,而且這會影響到所有繼承這個原型的物件)
屬性檢測
in 是判斷該屬性是否是自有屬性
hasownproperty()判斷是否是自有屬性
propertyisenumerable 是hasownproperty的增強版,只有檢測到是自有屬性且這個屬性是可列舉的(enumerable 為 true)才返回true
列舉屬性
ecmascript5中定義了兩個新的得到乙個物件的自有屬性
乙個是 object.keys() 返回乙個陣列是自由屬性中的可列舉屬性
乙個是object.getownpropertynames() 返回所有的自有屬性名稱
object.keys()跟object.getownpropertynames() 執行原理差不多
object.keys()的原理跟下面的例子差不多
function
keys
(o) }
return result;
}
記憶體隨手記
1,view handler activity conetxt 不可被靜態方法引用,會無法銷毀 引發記憶體問題。2,bitmap 在控制項不需要後,立即強制reclery。3,一些過載的方法,在不同廠商的rom存在初始化順序不同,需要嚴謹對待。4,view的載入不一定要在主線程載入。只是addvie...
架構隨手記
部分摘自 架構實戰 一書,紅色部分為個人見解。1架構與設計 所有的架構都是設計,但並不是所有的設計都是架構。架構代表塑造乙個系統的重要設計決策,這裡的重要性通過改變所需要的成本來衡量。有此可見架構所要做的是要吧其中關鍵 核心的部分組織起來 2架構師不僅對關鍵的功能性需求感興趣,還對系統質量 如效能 ...
手機安全隨手記
byod 的流行,可以把傳統軟體的 智慧型安全設計原則應有到手機裝置上 s system 系統化 i inciddent oriented 面向事件 m management 高效管理 p professionalism 降低專業化 l labor cost 減少人員成本 e envrionment...