JS中的new对象过程

当用new创建类的实例时,解释器首先会创建一个空的对象(相当于创建了一个新的作用域),把原型对象指向这个函数的原型对象,将this指针指向创建的上步创建的空对象然后运行这个函数。

代码理解为:

var a={};
function b(var){
    //这里相当于写构造函数
    
this.hi=function(){
        alert(var);
    }
}
//a.__proto__=b.__proto__#只能运行在FIREFOX上
b.call(a,
"hi");//call apply 用于对象方法
a.hi();

而Function对象在执行JS代码时候是先执行生产的

var a=function(){};
a();//跟上面的差别是少了新创建作用域,少了原生链指向
//
相同:均在一个作用域里运行了代码

()的作用

var a=function(){};
var b=new a();//无参数的时候省略为 new a;其实()还是有的
var c=a();
//()的作用是相同的 但new的时候会出创建一个新的作用域,之后在新的作用域运行
简化版:
var b=new (function(){})();
var c=(function(){})();
原文地址:https://www.cnblogs.com/liushannet/p/1971849.html