复习的时候看到了Object.prototype.toString.call(xx)可以得到目标对象xx的类型,输出[object type]的形式
但是印象中toString不是输出字符串吗,所以去查证了一番
链接
知乎上的文章如下链接
好像是一般咱们弄出来的对象都是系统默认重写过tostring了,如果想得到type这种形式,就要用原型链最上面那个没有重写过的tostring
所以先Object.prototype.toString得到这个未重写的函数,再让目标对象来调用这个函数,所以用到call
就能得到目标对象的type了
我刚刚试了一下
我写的一个构造函数,就class X{},然后里面没有重写tostring,但是tostring调用的时候,X.tostring()得到的就已经不是[type]这种形式了。可见是js内部自动重写了,但是如果我实例化这个X, var x = new X(),x.tostring(),得到的就是[type]的形式,实例对象x的toString没有被修改