js中new函数后带括号和不带括号的区别

我们都知道,js中可以使用new来创建实例。通常,new实例化的时候后面需要加括号。但是有些情况下后面带不带括号是一样的

function Parent(){
  this.num = 1;
}
console.log(new Parent());//输出Parent对象:{num:1}
console.log(new Parent);//输出Parent对象:{num:1}

但是,有时就出现问题

function Parent(){
  this.num = 1;
}
console.log(new Parent().num);//1
console.log(new Parent.num);//报错

结果分析:

从报错信息来看,new Parent.num执行顺序是这样的:先执行Parent.num,此时返回结果为undefined;后执行new,因new后面必须跟构造函数,所以new undefined会报错。
new Parent().num相当于(new Parent()).num,所以结果返回1。
从结果来看,new Parent.num代码相当于new (Parent.num);new Parent().num相当于(new Parent()).num。由此看来 new的构造函数后跟括号优先级会提升。

参考链接
https://blog.csdn.net/yihanzhi/article/details/80050716

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,405评论 0 13
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,868评论 0 5
  • 王先生最近迷上了抖音,一个视频接一个视频不停看,一个人在哪自娱自乐好不开心。 无意间看到他发的作品,首先昵称是凤凤...
    张女士的荆棘花园阅读 219评论 0 0
  • 之前写过一篇文章《学会一键排版,不要再纠结了》, 发现还是有很多人苦恼于写文章排版的问题,但我又觉得我之前文章里写...
    苏江同学阅读 9,393评论 27 169

友情链接更多精彩内容