描述下你對js閉包。面向物件、繼承的理解
阿新 • • 發佈:2018-11-14
1)閉包理解:
個人理解:閉包就是能夠讀取其他函式內部變數的函式;
使用閉包主要是為了設計私有的方法和變數。閉包的優點是可以避免全域性變數的汙染,缺點是閉包會常駐記憶體,會增大記憶體使用量,使用不當很容易造成記憶體洩露。在js中,函式即閉包,只有函式才會產生作用域的概念
閉包有三個特性:
1.函式巢狀函式
2.函式內部可以引用外部的引數和變數
3.引數和變數不會被垃圾回收機制回收
閉包常見用途:
建立特權方法用於訪問控制
事件處理程式及回撥
2) 面向物件:
面向物件程式設計,即OOP,是一種程式設計正規化,滿足面向物件程式設計的語言,一般會提供類、封裝、繼承等語法和概念來輔助我們進行面向物件程式設計。
參考:
http://www.ruanyifeng.com/blog/2010/05/object一oriented_javascript_encapsulation.html
3)繼承:
物件繼承分兩種情況,一種是建構函式的繼承,一種是原型(prototype)的繼承:
1. 建構函式的繼承,比較簡單,只需要在子物件中新增程式碼:parent.apply(this, arguments);
關於原型的繼承最優化的方法,利用空物件作為中介
2. 拷貝繼承
可參考:
https://segmentfault.com/a/1190000002440502
http://blog.csdn.net/james521314/article/details/8645815