【发布时间】:2021-07-30 13:43:34
【问题描述】:
我创建了两个对象。第一个按预期工作。
let working = {constructor: function(){
console.log("working");
}};
let notworking = {constructor(){
console.log("notworking");
}}
new working.constructor();
new notworking.constructor();
但是第二个抛出一个错误。错误信息是:
Uncaught TypeError: notworking.constructor is not a constructor
在 Firefox 和 Chrome 上测试。
在 Firefox DevTools 中,对象本身看起来是一样的。构造方法有区别。 工作构造函数具有属性参数、调用者、长度和名称。 不工作的构造函数只有属性长度和名称。
那么这两个对象或构造函数有什么区别呢?
【问题讨论】:
-
第二个“对象”没有键(用
:分隔)并且缺少分号 -
为什么要使用对象字面量表示法来创建带有构造函数的对象?为什么不使用
class或function? -
@NicoRichter:请注意,您可以用任何名称 (
foo) 替换constructor,这仍然成立,普通函数是可构造的,方法(和箭头函数)不是。
标签: javascript