说一说new会发生什么?
var obj = new Object() //1.创建空对象 obj.__proto__ = Func.prototype // 2.设置原型链 把构造函数的prototype属性,做为空对象的原型 var result = Fun.call(obj) //3.改变this指向,this赋值给这个空对象,执行构造函数,完成赋值 if(typeof(result) == 'object') { //4 是对象就返回 不是对象就返回这个空对象 return result }else { return = obj }
得分点
创建空对象、为对象添加属性、把新对象当作this的上下文、箭头函数不能作为构造函数
参考答案
标准回答
new
关键字会进行如下的操作:{}
);__proto__
,将该属性链接至构造函数的原型对象 ;this
的上下文 ;this
。加分回答
new
关键字后面的构造函数不能是箭头函数。延伸阅读
new
运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。