Object.prototype.toString 实现原理
Object.prototype.toString() 用来判断对象的内置类型
使用示例:
1 |
|
由于是Object对象的原型方法,所以,所有对象都有这个方法
但是不同对象会对toString()进行不同的重写实现,所以,单独通过目标对象调用toString()是无法获取对象类型的
如:
1 |
|
接下来看一下 Object.prototype.toString() 会执行的操作:
规范 ECMAScript 3
获取this对象的[[Class]]属性的值
计算出三个字符串”[object “, 第一步的操作结果Result(1), 以及 “]”连接后的新字符串
返回第二步的操作结果Result(2)
[[Class]]是一个内部属性,所有的对象(原生对象和宿主对象)都拥有该属性 在规范中,[[Class]]是这么定义的
[[Class]]属性只能通过Object.prototype.toString方法访问
规范 ECMAScript 5 会比 3 定义得更完善,但是原理是不变的
所以,平时使用时,通过call,改变this指向,可以判断不同对象的内置类型
附上各种对象的内置类型
1 |
|
找规律~
后面的类型都是以大写开头( ̄▽ ̄)