为了账号安全,请及时绑定邮箱和手机立即绑定

为什么通过call调用Object.prototype.toString.call()和对象本身调用toString返回的结果不同?

为什么通过call调用Object.prototype.toString.call()和对象本身调用toString返回的结果不同?

Tropicloz 2016-08-30 12:20:50
例如 直接用toString():console.log(true.toString());//"true" console.log(false.toString());//"false" console.log((1).toString());//"1" var str = "test123y"; console.log(str.toString());//"test123y" var arr = ["tom",12,"rose",18]; console.log(arr.toString());//"tom,12,rose,18" var patten = new RegExp("\\[hbc\\]at", "gi"); console.log(patten.toString());//"/\[hbc\]at/gi"用Object.prototype.toString.call():Object.prototype.toString.call("abc");//"[object String]" Object.prototype.toString.call(123);//"[object Number]" Object.prototype.toString.call(true);//"[object Boolean]" var arr = [1,2,3]; Object.prototype.toString.call(arr);//"[object Array]"为什么Object.prototype.toString.call()会返回类型 而不是像toString()一样返回对象内容的字符串型式?
查看完整描述

3 回答

?
Whistle2

TA贡献1条经验 获得超0个赞

两个toString根本不是继承同个方法。Object 本身是个构造函数,任意一个函数自身的toString方法都是继承自Funtion构造函数,而Object原型下面的构造函数是返回对象内部的class值。

查看完整回答
反对 回复 2016-08-30
  • 3 回答
  • 2 关注
  • 3765 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信