js的new操作符做了哪些事情
new操作符新建了⼀个空对象,这个对象原型指向构造函数的prototype,执⾏构造函数后返回这个对象
1、创建⼀个空的对象
2、链接到原型
3、绑定this指向,执⾏构造函数
js原型和原型链的理解4、确保返回的是对象
new过程⼀共有四个步骤:
题⽬解析
先看代码
var Func=function(){
};
var func=new Func ();
new共经过了4个阶段
1、创建⼀个空对象
var obj = new Object();
2、设置原型链(当调⽤构造函数创建⼀个新实例后,该实例的内部将包含⼀个指针(内部属性),指向构造函数的原型对象)
obj.__proto__= Func.prototype;
3、让Func中的this指向obj,并执⾏Func的函数体。(创建新的对象之后,将构造函数的作⽤域赋给新对象(因此this就指向了这个新对象))
var result =Func.call(obj);
4、判断Func的返回值类型:
如果是值类型,返回obj。如果是引⽤类型,就返回这个引⽤类型的对象
if (typeof(result) == "object"){
func=result;
}
else{
func=obj;;
}
默认情况下函数返回值为undefined,即没有显⽰定义返回值的话,但构造函数例外,new构造函数在没有return的情况下默认返回新创建的对象。
但是,在有显⽰返回值的情况下,如果返回值为基本数据类型{string,number,null,undefined,Boolean},返回值仍然是新创建的对象。只有在显⽰返回⼀个⾮基本数据类型时,函数的返回值才为指定对象。在这种情况下,this所引⽤的值就会被丢弃了
参考:blog.csdn/lxcao/article/details/52792466

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。