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

例如 直接用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()一样返回对象内容的字符串型式?

Tropicloz
浏览 3774回答 3
3回答

Whistle2

两个toString根本不是继承同个方法。Object 本身是个构造函数,任意一个函数自身的toString方法都是继承自Funtion构造函数,而Object原型下面的构造函数是返回对象内部的class值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript