js中new关键字

101 阅读1分钟

一.new的执行过程有哪几步

function Person(name,age){
    this.name = name;
    this.age = age;
}
var p = new Person("jack",23); //实例化
console.log(p.name)  //jack
内部操作:
    1.创建一个新对象
        var obj = new Object();
    2.把obj的proto指向构造函数的prototype对象,实现继承
        obj._proto_ = Fn.prototype
    3.将步骤一新创建的对象obj作为this的上下文
        var result = Fn.call(obj)
    4.返回创建的对象obj(如果该函数没有返回对象,则返回this)
    if(typeof result === 'object'){
        return result
    }else{
        return obj
    }