内置JavaScript函数toString的文档在哪里?

时间:2010-05-13 18:59:13

标签: javascript

我正在查看jQuery代码,发现isArray是使用内置函数toString实现的。我在MDC上找不到此功能的文档。该文件是否存在?这个功能有什么作用?

isArray: function( obj ) {
             return toString.call(obj) === "[object Array]";
         },

1 个答案:

答案 0 :(得分:3)

  

我正在查看jQuery代码,发现isArray是使用内置函数toString实现的

它不是内置的。见第68行:

toString = Object.prototype.toString,

jQuery正在toString的{​​{1}}方法下复制一个名为Object的变量。 toString方法记录在MDC here(以及ECMAScript本身)。然后,jQuery使用Object#toString调用方法的变量副本,并将对象作为call传入。这种环形交换调用方法是这样的,你不能创建一个覆盖this并且可能返回字符串toString()的对象。

(特别是,字符串'[object Array]'本身将'[object Array]'作为其[object Array]值,因此如果toString()被调用,则会被错误地检测为数组直接调用obj.toString() Object的基本实现可以避免这种情况。)

测试toString()表示形式是丑陋的(在主机对象的情况下仍然不是100%),但更直接的toString()不适用于跨窗口脚本,因为obj instanceof Array是每个窗口/框架中的不同构造函数。

ECMAScript第五版添加了函数Array以避免这种不愉快。但是,浏览器支持目前很差。