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方法的调用
我想知道得出各种结果的原因
求大神帮忙解答
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
_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()默认就是用逗号分隔的。