1. 程式人生 > >描述下你對js閉包。面向物件、繼承的理解

描述下你對js閉包。面向物件、繼承的理解

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