var a = "asd";
toString.call(a); //prints [object String]
为什么这与a.toString();
不一样? toString函数中this
的值在两种情况下都是正确的吗?我期望它输出“asd”(与a.toString()
相同)。
答案 0 :(得分:2)
您使用的是window.toString
,但应该是:
String.prototype.toString.call(a) // then it should be same
答案 1 :(得分:0)
它们是不同的方法(尽管它们具有相同的名称)。除了@xdazz's answer之外,还要证明toString
在其他类型中的表现不同:
[].toString.call("abc"); //Array
这也不会返回"abc"
。
document.querySelectorAll("*").toString.call("abc") //Node List
不是"abc"
。
(2).prototype.toString.call("abc") //Number
错误以及Number中的toString
也可以有一个基数参数。
结论:他们都不同。由于window
是某种奇怪的Object
,因此它与toString
的{{1}}不共享。