網上其實有很多說new關鍵字做了哪些操作,讀過之后就忘了,這里以自己的理解做一個簡單的記錄。
function Naji () { this.skulk = function () { return this; } } var naji1 = new Naji ();
new關鍵字做了三步
1.創建一個新的空對象
說明:感覺這一步沒什么好說的
2.新的對象被設置為該函數的上下文
說明:講真,不容易理解的就是這句話,按照我的理解其中最重要的就是this 指向的問題,我覺得其實就是把構造函數的this指向指向了新的對象;
在上面的函數中就是把Naji函數的this指向了對象naji1,這樣新對象naji就能調用Naji中的函數。
作為測試,可以構建兩個函數
var naji1 = new Naji (); var naji2 = new Naji (); console.log ( naji1.skulk === niji1 ) // true console.log ( naji2.skulk === niji2 ) // true
3.為該對象增加一個新的方法
說明: 也就是這里的skulk方法,其實我覺得這些都已經在第二步的時候已經做完了,也有可能是我理解的問題,歡迎指正!!!謝謝🙏