JavaScript new 的时候到底发生了什么?

function Person(name) { this.name = name; } let liLei = new Person('lilei'); console.log(liLiei.name) // lelei; 刚开始学习js的时候我们很难明白new的时候发生了什么,那么我用代码的形式说一下我自己的理解,如果有错误欢迎指出: // 假设我们有一个New函数fn为构造函数eg: Person function New(fn) { let res = {}; //第一步生成一个空对象 if(fn.prototype !== null) { res.__proto__ = fn.prototype; //将生成的对象的原型指向构造函数的prototype属性 } let retu = fn.apply(res,Array.prototype.slice.call(arguments, 1)); //将构造函数的作用域赋给新的对象,执行构造函数里面的代码为新对象添加属性 if((typeof retu === 'object' || typeof retu === 'function') && type retu !== null) return retu; //如果构造函数有返回值则返回该结果 return res; // 没有返回值则返回新创建的对象也就是我们说的实例 } new的时候大概就是发生了以上几点变化,如果你能理解这个New函数里面的意思,那么就可以轻而易举的记住喽
posted @ 2018-10-30 20:19  aleng_liu  阅读(683)  评论(0编辑  收藏  举报