犀牛書隨手記 04

2021-07-09 09:39:51 字數 1011 閱讀 5050

在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...