判断数据类型instance of type of object.prototype.tostring 区别

Posted 蝈蝈flying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断数据类型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

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

以上是关于判断数据类型instance of type of object.prototype.tostring 区别的主要内容,如果未能解决你的问题,请参考以下文章

No enclosing instance of type XXX is accessible

instanceof的原理

No enclosing instance of type Stu is accessible

TypeError: super(type, obj): obj must be an instance or subtype of type

Java中出现No enclosing instance of type XXX is accessible问题

Java变异出现错误:No enclosing instance of type XXX is accessible