使用function和“new”的设计意图是什么?关键字在Javascript中创建对象

What is the intention behind the design of using function and "new" keyword to create objects in Javascript?

本文关键字:关键字 是什么 Javascript 创建对象 意图 function new 使用      更新时间:2023-09-26

正如我们所知,在Javascript中我们使用function和"new"来创建对象。

var Cat = function() {...};
var cat = new Cat();

然而,从编程语言设计的角度来看,我认为这对人们的直觉来说是相当模糊的。人们是如何想出这个设计的?

(重点不是关于"new"关键字,而是在语法上使用"函数"来创建对象,这很模糊。对象就是对象。为什么它与函数有任何关系?)

初始化实例可能涉及逻辑,因此使用function是很自然的选择。
可以为此发明特定的语法,但最终构造函数是一个代码块,可选地带有一些参数:就像函数一样。

几年后,我说服了自己。使用函数创建对象并不晦涩。实际上,创建对象的函数被称为"构造函数",当我现在回想起来的时候,这对我来说应该已经足够明显了,但不幸的是,当我问这个问题的时候,还没有。

Cat构造函数定义为如下函数后,

var Cat = function() {
  this.legs = 4;
}

当你调用new Cat()时,JS在幕后隐式地添加了2行。

var Cat = function() {
  this = {}; // implicitly added
  this.legs = 4;
  return this; // implicitly added
}