胡说叔叔
首先 mdn 上直接有说这个问题:All method definitions are not constructors and will throw a TypeError if you try to instantiate them.但结论过于简单,而 ecma规范 里有 Abstract Operations 的说法:These operations are not a part of the ECMAScript language; they are defined here to solely to aid the specification of the semantics of the ECMAScript language. Other, more specialized abstract operations are defined throughout this specification.意思就是这些操作不是ECMAScript语言的一部分;它们的定义只是为了帮助规范ECMAScript语言的语义。个人理解就是这些抽象操作是作为ECMAScript语言的辅助操作。比如我们常见的类型转换相关的抽象操作 ToPrimitive。接下来我们找到isconstructor ,该操作就是用来判定一个值是否能作为构造函数:If Type(argument) is not Object, return false.
If argument has a [[Construct]] internal method, return true.
Return false.意思就是类型必须是对象,且拥有[[Construct]]这个内部方法,才能作为构造函数。那么是否表示对象简写方法形式没有[[Construct]]这个内部方法呢?maybe,这个还要继续去看下其它相关规范,待理解清楚后再来继续回答吧。。。