js构造函数内部出现return会怎样

 我来答
大沈他次苹0B
2022-06-20 · TA获得超过7288个赞
知道大有可为答主
回答量:3059
采纳率:100%
帮助的人:172万
展开全部
一提到js构造函数,可能很多人都会想到构造函数内部最好不要出现return甚至不要出现return的警告语。
那么,假如js构造函数内部出现了return,又会怎样呢?

js构造函数内部没有return时:

输出一下p看看结果,如图所示:

注意红圈圈,显示p对象的类型是People。

如果一:
如果在构造函数内部添加上一个return关键字会怎样呢?

还是输出一下p,结果如图所示:

是不是没有任何变化?!所以,仅仅添加一个return关键字是没有影响的。

如果二:
那如果return一个数字呢?

同上,还是输出p查看结果,如图所示:

是不是有没有任何变化?!那就是了,return数字类型的也没有影响。

如果三:
return一个字符串

结果:

结果和没有添加return的时候是一样的,即return字符串是没有影响的。

如果四:
添加return undefined;

结果如图所示:

依然是没有变化的,即return undefined;也是没有影响的。

如果五:
添加return null;

结果如图所示:

对比发现,return null;也是没有影响的。

如果六:
添加return {};

结果如图所示:

等等,怎么显示p的类型是Object,难道不应该是People吗?
是的,你没有说错,p的类型应该是People;但这里确实显示的是Object。说明添加return {};是有影响的,把构造函数内部的this给替换了。

如果七:
添加return function(){};

结果如下:

p的类型变成了function,显然受影响了。

综上所述,有没有发现问题?
构造函数内部仅仅添加return关键字,或者return的是数字、字符串、null、undefined等值类型的数据的时候,使用new关键字执行后对新产生的对象是没有影响的。
但是,一旦构造函数内部return的是对象、函数等引用类型的数据,使用new关键字执行后新对象的具体类型就被改变了。显然,正常情况下这并不是我们想要的结果。
而且,即使return值类型的数据不会改变新对象的具体类型,但也并没有什么实际意义。
所以呢,js构造函数内部还是不要出现return比较好啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式