【发布时间】:2012-01-01 11:52:56
【问题描述】:
下面是 JavaScript 中的一个问题:
// 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 in String[not found] --> toString in String.prototype[not found]
--> toString in Object.prototype[found]
【问题讨论】:
-
不是 javascript 专家,但我怀疑这与调用预定义函数并传递空参数有关,而不是在不存在的对象上调用函数。
-
您如何检查这些结果?浏览器控制台,还是别的什么?
-
@ShadowWizard Chrome 浏览器控制台。
-
我还以为只是浏览器显示不好,但看来我错了,对不起。
标签: javascript