如下代码,我的理解res和res2的值应该是一样的。
res
res2
var a = "abc"; var res = Object.prototype.toString.call(a); //"[object String]" var res2 = a.toString(); //"abc"
认证0级讲师
对于Object.prototype.toString的返回格式通常是:
[object Undifined] [object Null] [object class] // class指的是对象类型
当调用a.toString()是,调用的是String.prototype.toString,返回的就是a的值
Object.prototype.toString.call()
a.toString(); //"abc"
String
prototype
toString()
Object
我记得是,String类型的toString被重写了,调用的是valueOf方法,返回的是原始的字符串值。当然JavaScript中许多类型的toString方法都被重写了,所以调用的时候,会在原型链上优先找到自身的toString方法,而非调用Object.prototype.toString
toString() 方法返回一个代表该对象的字符串,它被写在Object构造函数的原型对象上,即Object.prototype.toString我们平时用到的转换字符串的场景,如
Object.prototype.toString
var a = 2; console.log(a.toString()); //'2'
是因为继承自Object上的对象重写了toString这个方法如果要调用原型上的方法返回对象的类型,必须把调用toString的对象改变成Object本身
toString
var a = 2; console.log(Object.prototype.toString.call(a)); //[Object Number]
所以一般见到Object.prototype.toString.call(variable)都是用来判断变量的类型的
Object.prototype.toString.call(variable)
对于Object.prototype.toString的返回格式通常是:
当调用a.toString()是,调用的是String.prototype.toString,返回的就是a的值
Object.prototype.toString.call()
一般使用来判断类型的。a.toString(); //"abc"
因为String
的prototype
上也有toString()
这个方法所以就不用到Object
里找了。我记得是,String类型的toString被重写了,调用的是valueOf方法,返回的是原始的字符串值。当然JavaScript中许多类型的toString方法都被重写了,所以调用的时候,会在原型链上优先找到自身的toString方法,而非调用Object.prototype.toString
toString()
方法返回一个代表该对象的字符串,它被写在
Object
构造函数的原型对象上,即Object.prototype.toString
我们平时用到的转换字符串的场景,如
是因为继承自
Object
上的对象重写了toString
这个方法如果要调用原型上的方法返回对象的类型,必须把调用
toString
的对象改变成Object
本身所以一般见到
Object.prototype.toString.call(variable)
都是用来判断变量的类型的