new一个对象做了哪些操作
网上其实有很多说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方法,其实我觉得这些都已经在第二步的时候已经做完了,也有可能是我理解的问题,欢迎指正!!!谢谢🙏