現在好多人的基礎不咋的,包括我在內哈哈,得多多學習,多多看書,其實小紅書寫的是真好,可惜沒多少人真的看進去理解子 。。。。
什麼是構造函數呢?
構造函數其實就是普通的函數,就是調用的方法不同,通常都是首字母大寫,用到 new 。
構造函數的一個問題就是:每次都重新在實例上重新創建一次。。
什麼情況下會使用到構造函數呢?
在生成數組的情況下會使用到,es6 中的 class 其實就是構造函數的語法糖。構造函數 Array 來說,我們隨便創建一個函數A,然後 new A(),那麼這個對象的構造函數就是 A。是不是很簡單?
什麼情況下會使用到 this 呢?
this 的話一般分好幾種情況,最簡單的就是就近原理,指向當前對象。
如果是函數中的話 this 指向的是 window 。
如果是 方法調用的話,這個 this 誰調用這個方法誰就是 this 。
構造函數調用,this 就是指的當前對象。對象上面有屬性和方法,如果某個函數中調用這個屬性或者方法,那麼就用到 this。
es6 中小箭頭函數的理解?
es6 中的小箭頭函數中是沒有 this ,也沒有 prototype,也沒有 argument super() 。當然也不能用構造函數、call 或者 apply 。
小箭頭函數中 call 或者 apply 是無法使用的,沒辦法改變當前的作用域。
小箭頭函數中 this 一旦定義是無法改變的。
new 的話會改變 this 的指向的。
這裏扯到一個 call 和 apply 的區別?
一句話的理解:call 可以接收多少參數,apply 只能接收兩個參數。
構造函數的流程是啥呢?
1、創建一個構造函數。
2、將新的對象設置函數的 this 。這裏的this 用作新對象。
3、逐行的執行函數。
4、將新建的對象做爲返回值。
順便講一波 function ?
每個函數都是對象,每個對象都有屬性和方法。
屬性裏面有:length、prototype。
方法裏面有:call、apply。
函數的內部屬性有:argument、this(內部屬性)。
如何創建立一個構造函數呢?
寫個 demo :