龙空技术网

JS构造函数加new与不加new的区别?

通俗易懂学前端 156

前言:

现在看官们对“newobjectjs”大概比较珍视,我们都需要剖析一些“newobjectjs”的相关文章。那么小编在网络上网罗了一些有关“newobjectjs””的相关文章,希望兄弟们能喜欢,大家一起来学习一下吧!

要知道这个问题,需要知道new的过程发生了什么?终于在(js高级程序设计第三版)给出了答案:

1.创建一个空对象

2.将这个空对象的原型,指向构造函数的prototype属性,构造函数中的this指向这个空对象

3.开始执行内部的代码。

4.如果该函数没有返回对象,则返回this

对第四点我要补充一点:因为有个关键字大家容易遗漏,就是对象这两个字,这意味着如果返回的是基本数据类型,比如:int ,string, 那么使用new 最后返回的还是this,这个对象,而不是基本数据类型,这是一个非常容易被遗漏的地方。

其他例子就不多说了,再补充两点总结:

小结:

1. 没有new的构造函数就是一个普通函数,this指向的window,返回值就是构造函数的返回结果。并且不管return的是基本数据类型还是引用类型,都会原样返回。

2. 有new的构造函数,默认返回this,而this指向实例化的对象。并且如果return的是基本数据类型,那么忽视掉该return值,如果返回的是一个引用类型,那么返回该引用类型。

标签: #newobjectjs