在javascript中输出调用函数

时间:2014-01-17 05:17:10

标签: javascript

var a = "asd";
toString.call(a); //prints [object String]

为什么这与a.toString();不一样? toString函数中this的值在两种情况下都是正确的吗?我期望它输出“asd”(与a.toString()相同)。

2 个答案:

答案 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}}不共享。