做者:狐狸家的魚html
本文連接:面向對象編程
gitGitHub:sueRimngithub
具備靈活、代碼可複用、高度模塊化等特色,易維護和開發編程
JavaScript使用構造函數做爲對象的模板,描述實例對象的基本結構數組
定義app
特色模塊化
new
命令基本用法函數
new命令的做用就是執行構造函數,返回一個實例對象this
根據須要,構造函數也能夠接受參數 原理prototype
使用new命令時,它後面的函數依次執行下面的步驟
prototype
屬性this
關鍵字構造函數內部,this指的是一個新生成的空對象 new.target
若是當前函數是new命令調用,new.target
指向當前函數,不然爲undefined
涵義
this
就是屬性或方法「當前」所在的對象this
的指向是可變的使用場合
this
指的就是頂層對象window
this
指的是實例對象this
指的就是方法運行時所在的對象使用注意點
this
的值,而後內層函數調用這個變量 var that = this
this
map
和forEach
方法,運行提供一個函數做爲參數。這個函數內部不該該使用this
var that = this
this
看成forEach
方法的第二個參數,固定它的運行環境this
綁定this的方法
this
的指向(即函數執行時所在的做用域),而後在所指定的做用域內,調用該函數call
方法的參數,應該是一個對象。若是參數爲空、null
、undefined
,則默認傳入全局對象call
方法能夠接受多個參數。第一個參數就是this
所要指向的那個對象,後面的參數則是函數調用時所需的參數call
的惟一區別就是,它接收一個數組做爲函數執行時的參數apply
方法的第一個參數也是this所要指向的那個對象,若是設爲null
或undefined
,則等同於指定全局對象call
方法中必須一個個添加,可是在apply
方法中,必須以數組形式添加apply
方法和Math.max
方法undefined
slice
方法,能夠將一個相似數組的對象(好比arguments
對象)轉爲真正的數組this
綁定到某個對象,而後返回一個新函數call
方法使用原型對象
構造函數的缺點是同一個構造函數的多個實例之間,沒法共享屬性,從而形成對系統資源的浪費。解決方法:使用prototype
prototype
屬性的做用就是:JavaScript
繼承機制的設計思想就是,原型對象的全部屬性和方法,都能被實例對象共享原型對象的做用就是定義全部實例對象共享的屬性和方法
原型鏈
因爲原型對象也是對象,因此它也有本身的原型,對象到原型,再到原型的原型……
Object.prototype
的屬性Object.prototype
的原型是null
,原型鏈的盡頭就是null
Object.getPrototypeOf
方法返回參數對象的原型constructor屬性
prototype
對象有一個constructor
屬性,默認指向prototype
對象所在的構造函數,能夠被全部實例對象繼承