本篇文章並不是新知識的探索,文章沒啥含量,就是看到某2個不同領域的知識,被串聯起來,或者語言的設計思想被印證了感到開心而記錄下來。
假期看了本關於 JS 的書。很多地方就是已知知識。但是看到2個地方感覺和現有知識體系有關聯,蠻有意思。拍照記錄了下
Javascript 借鑑了 Self 語言中關於原型的繼承,可能會比較陌生,什麼是“Self”?
看看 JS 的表現:假設從物件 O 中查詢屬性 X
- 如果 O 沒有 X 這個自有屬性,則會從 O 的原型物件查詢屬性 X
- 如果原型物件也沒有叫做 X 的自有屬性,但它有自己的原型,則繼續查詢這個原型的原型
- 這個過程會不斷繼續,直至找到屬性 X 或者查詢到一個原型為 null 的物件
可見,物件通過其 prototype 屬性建立了一個用於繼承屬性的鏈條或連結串列。
對比 OC 物件記憶體佈局,屬性或者方法訪問套路一致。
其實,Self 語言由派生自 Smalltalk,也就是 Objective-C 的借鑑語言。訪問 JS 物件屬性、方法(找不到則從原型鏈上不斷回溯,直到找到或者找到元類物件 null),這個特性和 OC 一模一樣。
關於 Self 語言有2箇中文 PDF可供翻閱。SELF:簡潔的威力、克隆的反攻