物件導向:
私有屬性、私有方法、特權方法、靜態方法、靜態屬性、公共屬性、公共方法、繼承、閉包
閉包:有權訪問 另一個函式作用域中的變數 的函式
因為鏈式作用域問題,父級可以訪問子級方法內部的變數,
將子級函式作為返回值
繼承:
類式繼承:
父類的例項賦值給子類的原型。
例項化父類,同時建立了父類原型,將子類原型指向宣告的父類,此時子類原型可以訪問父類以及父類原型。
建構函式繼承:
在子類的建構函式作用域中執行父類的建構函式
子類中宣告新增此句 Parent.call(this,params);
組合是繼承:
類式繼承+建構函式式繼承
還是經典的call來呼叫父類建構函式,將父類重新執行一遍,類似於重新整理一遍,這樣多個子類例項之間不受引用型別的影響。
原型式繼承:子類宣告接收父類的類F,將F的原型指向進來的父類,return new F();
將父類在子類中封裝返回。
<script type="text/javascript"> function inheritObject(o) { function F(){}; F.prototype = o; return new F(); } var book = { name: "js book", alikeBook: ["css", "book", "html"] }; var newbook = inheritObject(book); newbook.name = "newbook"; newbook.alikeBook.push("newbook book"); var obook = inheritObject(book); obook.name = "obook"; obook.alikeBook.push("obook book"); console.log(newbook.name); console.log(newbook.alikeBook); console.log(obook.name); console.log(obook.alikeBook); console.log(book.name); console.log(book.alikeBook); </script>
寄生式繼承:是對原型式繼承的封裝
寄生組合式繼承:寫到這,我突然發現,ES6 對繼承已經做了封裝,思想共統一。