简单记录下new一个js对象时,做了什么事情。
1、创建一个空对象=》{}
2、将1中创建的空对象的__proto__属性指向构造函数的prototype属性。
3、将构造函数的this指定为1中创建的空对象。
4、执行构造函数(为this绑定属性、复制等操作)。
5.1、如果构造函数有返回值,且返回类型为引用类型,则将构造函数的返回值作为new的结果返回
5.2、如果构造函数有返回值,且返回类型为基础数据类型,如int,则无论构造函数返回什么都无效,都将1中创建对象作为构造函数返回值返回。
5.3、如果构造函数没有返回值,则将1中创建对象作为构造函数返回值返回。
function fn(){
return fn
}
new fn() instanceof fn