为什么"新功能"调用该功能?

sac*_*024 0 javascript date new-operator

我只是在玩Date物体,我观察到了这一点

  1. new Date()//返回Date对象
  2. Date()//以字符串格式返回Date

MDN - 日期文档证实了这一点

注意:请注意,JavaScript Date对象只能通过调用JavaScript Date作为构造函数来实例化:将其称为常规函数(即没有new运算符)将返回一个字符串而不是Date对象; 与其他JavaScript对象类型不同,JavaScript Date对象没有文字语法.

棘手的部分new Date返回相同的结果new Date()返回?

我尝试了正常功能的相同实验,

function f() {
  console.log(' I am executed');
}

new f
Run Code Online (Sandbox Code Playgroud)

我很惊讶看到I am executed记录.我试图找出当我不使用execution ()运算符时调用f的原因.有人可以解释一下为什么new叫这个方法?

PS:我不知道new f应该给我什么.这是一个语法错误所以我认为它会给我一个错误.但事实并非如此.

m59*_*m59 5

因为new将调用您正在创建的对象的构造函数.在函数的情况下,该函数既是该对象的对象又是构造函数.