typeof
在不同的上下文中应用到相同的值时,会产生不同的字符串结果。例如,下面的代码是符合预期的:
> typeof 5
'number'
然而,通过this
访问5
的typeof
并不相同:
> Number.prototype.foo = function () { return typeof this; };
[Function]
> (5).foo()
'object'
这只是另一个(不)合理的检查,真正严格验证this
是一个数字:
> Number.prototype.foo = function () { return [this + 1, typeof this]; };
[Function]
> (5).foo()
[ 6, 'object' ]
我已经阅读了 MDN 文档和 ECMAScript 规范中 typeof 的相关内容,但我无法想象这与预期相符,更不用说正确性。有人能解释一下吗?
this
及其所代表的内容有关。 - epascarellothis + 1
实际上是this.valueOf() + 1
。 - epascarello