使用对象文字和使用构造函数创建对象(理论上)以及何时使用它们之间的区别是什么?Object Literals - Vs - 构造函数
我不是指我们如何使用它们。我的意思是他们如何在幕后工作,以及他们的机制如何不同!
使用对象文字和使用构造函数创建对象(理论上)以及何时使用它们之间的区别是什么?Object Literals - Vs - 构造函数
我不是指我们如何使用它们。我的意思是他们如何在幕后工作,以及他们的机制如何不同!
基本上 - 在ES2015之前 - 使用对象文字创建对象时,您无法向对象添加方法。
由于ES2015的是可以添加的方法来反对文字,这使得对象文字和类声明八九不离十:
var obj = {
// __proto__
__proto__: theProtoObj,
// Shorthand for ‘handler: handler’
handler,
// Methods
toString() {
// Super calls
return 'd ' + super.toString();
},
// Computed (dynamic) property names
[ 'prop_' + (() => 42)() ]: 42
};
另一个重要的事情是,当你想创建一个类的实例 - 你会想要基于该类声明创建类声明和初始化对象。
很高兴指出ECMAScript 2015中引入的功能,大部分副本都有点旧。对象初始值设定项的附加功能也包含在[* MDN *](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer)中。尽管谨慎使用'__proto__',它是[* ECMA-262 *附录]中的扩展(http://ecma-international.org/ecma-262/8.0/#sec-__proto__-property-names-在-对象初始化)。 – RobG
有[许多重复](https://stackoverflow.com/search?q=%5Bjavascript%5D+literal+vs+constructor)。 – RobG
我不是在说如何使用它们。我正在谈论当我使用他们两个时在js幕后发生的事情。我问我的问题,因为我发现没有其他问题是为了我要找的点... 所以我的问题不是重复的! –
如果您想回答问题,则编辑该问题。 –