Mic*_*leA 5 javascript types type-conversion
我在地址栏中尝试了这段代码:
javascript: alert({} + [])
结果是:[object Object].
javascript: alert(typeof ({} + []))
结果是:字符串.
有人可以向我解释发生了什么吗?
连接运算符 (+) 将两个字符串值连接在一起。如果你给它的东西不是字符串值,那么它.toString()首先调用它们的方法。
回应下面的评论,“是的,确实如此!”
Object.prototype.toString = function () { return "a"; };
Array.prototype.toString = function () { return "b"; };
var foo = {} + [];
alert(foo); // alerts 'ab'
Run Code Online (Sandbox Code Playgroud)
如果没有对原型进行上述修改,那么您alert({} + [])将采用{}.toString()( )"[Object object]"和[].toString()(""数组为空时) ,然后将它们连接起来 ( 仍然"[Object object]") 。这是一个字符串,并且typeof会告诉你它是一个字符串。
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |