new构造函数的实现原理

当我们说new一个对象的时候,实际做了些什么?
下面通过代码模拟一下


var newFunc = function ( func ){
    //1.新建一个空对象,并将 构造函数的原型对象赋给这个空对象
    var obj = Object.creat(func.prototype);
    //2.执行构造函数,相应参数被传入,并将this的上下文指向新创建的对象obj
    var ret = func.call(obj);
    //3.如果构造函数返回了对象,就舍弃之前创建的对象obj,newObj = ret
    if(typeof ret === 'object') return ret;
    //4.反之,newObj = obj
    else return obj;
}
var foo = function(name){
    this.name = name || 'lalaBao';
}
var newObj = newFunc(foo);
//哦豁,就这样婶

你可能感兴趣的:(前端基础知识整理)