开发者社区> 问答> 正文

关于javaScript中toString的问题

 var a = {};
var _ff = a.toString;
var arr = [1,2,3,4];
_ff.call(arr);         //"[object Array]"
toString(arr);         //"[object Object]"
_ff(arr);              //"[object global]"
arr.toString();        //"1,2,3,4"

同样的toString方法的调用
我想知道得出各种结果的原因
求大神帮忙解答

展开
收起
小旋风柴进 2016-03-18 10:10:12 1952 0
1 条回答
写回答
取消 提交回答
  • _ff.call(arr); 表示输出当前对象的字符串表示。Ecmascript5中定义的数组的标准写法就是"[object Array]",toString(arr)那个其实调用的是window.toString();而arr是没有任何意义的,把arr换成任何对象比如toString(0)、toString({})都是一样的输出,而且不同的浏览器显示的不一样,chrome下显示的是"[object Window]",_ff(arr)其实调用的是toString()这个函数本身,你可以直接输出_ff 看一下,会发现_ff输出的是一个函数,函数加上括号调用,就是调用该函数,因此返回"[object global]",这个结果也是跟浏览器相关的,chrome下显示的是"[object Undefined]",arr.toString()这个也是Ecmascript5的标准用法,数组的toString()默认就是用逗号分隔的。

    2019-07-17 19:05:58
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载