(3).constructor
是Number,但"constructor" in (3)
是TypeError,为什么?
答案 0 :(得分:3)
in
运算符的规范解释了这一点。具体来说,请参见语义评估的第5步。
11.8.7 in运算符
ShiftExpression中的生产RelationalExpression:RelationalExpression评估如下:
(3).constructor
工作的原因是理解起来有点困难,但实际上当你在带有原始基础的引用上使用点运算符时,它会被提升到一个对象中。
答案 1 :(得分:3)
使用property accessor时,数字3
会变成 Number 的对象。并且该类型的对象具有构造函数,因此具有constructor
属性。
但是as ChaosPandion already pointed out,in
operator需要正确的表达式来生成一个对象,但3
不是一个对象而是一个普通的数字文字。