使用function和“new”的设计意图是什么?关键字在Javascript中创建对象
What is the intention behind the design of using function and "new" keyword to create objects in Javascript?
正如我们所知,在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
}
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- Javascript中“this”关键字的目的是什么?
- 在javascript中使用“new”关键字的替代方案是什么?
- 蜘蛛中的“extends”关键字是什么
- 此代码中发生了什么,如果没有“with”关键字,以下内容的基本实现是什么
- “this”关键字在下面的Javascript代码中指的是什么
- “char”关键字的用途是什么
- “return”关键字在“forEach”函数中是什么意思
- 在self.setInterval中,jquery关键字self-referred指的是什么?jquery
- javascript注释中全局关键字的用途是什么
- 当用作函数参数/agrument时,关键字this指的是什么
- extends关键字在这个上下文中是什么意思?
- 在React JS中,这个关键字之前的::是什么?
- 使用function和“new”的设计意图是什么?关键字在Javascript中创建对象
- QML中默认关键字的用途是什么
- 这个关键字在方法的 js 内部方法中的逻辑是什么