这里是JavaScript的以下问题:为什么“foo”.toString()与toString.call(“foo”)不一样?
// Tested via Google Chrome console.
var toString = Object.prototype.toString;
"foo".toString(); // "foo"
toString.call("foo"); // [object String]
[].toString(); // ""
toString.call([]); // [object Array]
{}.toString(); // syntax error
toString.call({}); // [object Object]
为什么的toString的结果是不同与toString.call()?
修订
String.prototype.toString.call("foo"); // "foo"
Object.prototype.toString.call("foo"); // [object String]
是String.prototype.toString不是从原型链像下面?
的toString字符串[未找到] - > [未找到]在String.prototype的toString
--> toString in Object.prototype[found]
不是一个JavaScript专家,但我怀疑它与调用预定义的函数,并传递一个null参数,而不是做在一个不存在的对象上调用一个函数。 – bdares 2012-01-01 11:55:27
你如何检查这些结果?浏览器控制台,还是别的? – 2012-01-01 11:55:50
@ShadowWizard Chrome浏览器控制台。 – 2012-01-01 12:02:26