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方法,其实我觉得这些都已经在第二步的时候已经做完了,也有可能是我理解的问题,欢迎指正!!!谢谢🙏

 

posted @ 2018-07-11 00:43  竹林中  阅读(2839)  评论(0编辑  收藏  举报