对于x
我测试过的大多数值,以下计算结果为true
:
Object.getPrototypeOf(x) === x.constructor.prototype
...但也有一些例外:如果x
是字符串,则上面表达式的 LHS 会失败,并出现类似的错误
TypeError: "abc" is not an object
...虽然,例如,"abc".constructor.prototype
评估为String.prototype
. x
如果是数字或布尔值,则会得到类似的结果。
这是怎么回事?前面显示的身份还有更多例外吗?
更重要的是,以上表明x.constructor.prototype
比 更健壮Object.getPrototypeOf(x)
。
有什么充分的理由不专门使用x.constructor.prototype
并完全忘记Object.getPrototypeOf(x)
?