instance of type of object.prototype.tostring 区别

typeof

typeof 是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型。
 
返回的结果用该类型的字符串(全小写字母)形式表示,包括以下 6 种:
 
number、boolean、string、object、undefined、symbal 、function。
 
typeof 对于对象,除了函数都会显示 object
 
对于 null 来说,虽然它是基本类型,但是会显示 object,这是一个存在很久了的 Bug

instance of

instanceof 是用来判断 A 是否为 B 的实例,
 
表达式为:A instanceof B,
 
例:arr instanceof Array
 
如果 A 是 B 的实例,则返回 true,否则返回 false。
 
在这里需要特别注意的是:instanceof 检测的是原型。
 
 
 

Object.prototype.toString.call

toString 是 Object 原型对象上的方法,
 
使用 call 来调用该方法会返回调用者的类型字符串,格式为 [object,xxx],xxx 是调用者的数据类型,
 
包括:String、Number、Boolean、Undefined、Null、Function、Date、Array、RegExp、Error、HTMLDocument 等,
 
基本上,所有的数据类型都可以通过这个方法获取到。
 
Object.prototype.toString()返回[object class], 我们可以通过它获取对象的类型信息
 
eg:[object Array]
 
toString() 获取某个类型的数据的类型
 
 
valueof() 获取某个类型的数据的值
 
 
ES6   Symbol.toPrimitive
 
Symbol.toPrimitive被调用时,会接受一个字符串参数,表示当前运算的模式,一个有三种模式。 该方法在转基本类型时调用优先级最高
 
  • Number:该场合需要转成数值
  • String:该场合需要转成字符串
  • Default:该场合可以转成数值,也可以转成字符串。
 

比较运算符          

  1. 如果是对象,就通过 toPrimitive 转换对象
     
  2. 如果是字符串,就通过 unicode 字符索引来比较

 

new

  1. 新生成了一个对象
  2. 链接到原型
  3. 绑定 this
  4. 返回新对象

在调用 new 的过程中会发生以上四件事情,我们也可以试着来自己实现一个 new

 
 
 如果本文对您有帮助,请抬抬您的小手,点下右下角的推荐, ^-^,当然如果看了这篇博客对您有帮助是我最开心的事,毕竟赠人玫瑰,手有余香, ^-^,如果这篇博客没有帮助到您,那就只能说一声抱歉啦
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2018-11-14 08:30  Katydids  阅读(521)  评论(0编辑  收藏  举报