再认识构造函数、返回值和new关键字
基本概念
首先要明确和构造函数相关的基本概念,不要觉得概念定义这些都不重要,只要能自己能理解就ok,有时候分不清这些会让自己显得很不专业。
|
|
以上命名都是传统静态语言中的命名对应到js中的叫法。
返回值问题
正常情况下,使用构造函数时是不会使用return语句的,但是如果不小心或者刻意加入return语句,会怎样呢?直接上实验结果:
|
|
总结就是,如果返回值是引用类型数据,则使用返回值,否则使用正常构造函数创建绑定流程,return new String('123')
这种形式生成的其实也是object(可使用typeof new String()验证)。
至于为什么是这样的表现,只能说规范是这么定的,说不准以后就改了。
new关键字
new 关键字究竟干了什么?结合上面梳理的基本概念来理解,new
大体上干了三件事:
|
|
之前就看到过相关博文的分析,然而很快就忘了,记得不够深刻。。。究其原因,还是对构造函数的相关概念理解不深刻导致的,同时充分说明了,要抠细节,一定要对各个语法概念有一个明确、清晰的认识。