首页 > 其他分享 >js判断变量数据类型typeof、instanceof、Object.prototype.toString.call()、 constructor

js判断变量数据类型typeof、instanceof、Object.prototype.toString.call()、 constructor

时间:2022-09-05 13:00:58浏览次数:77  
标签:instanceof 检测 Object 数据类型 toString call prototype

JavaScript有4种方法判断变量的类型,分别是typeof、instanceof、Object.prototype.toString.call()(对象原型链判断方法)、 constructor (用于引用数据类型)

 

typeof:常用于判断基本数据类型,对于引用数据类型除了function返回’function‘,其余全部返回’object'。

 

instanceof:主要用于区分引用数据类型,检测方法是检测的类型在当前实例的原型链上,用其检测出来的结果都是true,不太适合用于简单数据类型的检测,检测过程繁琐且对于简单数据类型中的undefined, null, symbol检测不出来。

constructor:用于检测引用数据类型,检测方法是获取实例的构造函数判断和某个类是否相同,如果相同就说明该数据是符合那个数据类型的,这种方法不会把原型链上的其他类也加入进来,避免了原型链的干扰。

Object.prototype.toString.call():适用于所有类型的判断检测,检测方法是Object.prototype.toString.call(数据) 返回的是该数据类型的字符串。

 

这四种判断数据类型的方法中,各种数据类型都能检测且检测精准的就是Object.prototype.toString.call()这种方法。

 

instanceof的实现原理:验证当前类的原型prototype是否会出现在实例的原型链__proto__上,只要在它的原型链上,则结果都为true。因此,`instanceof` 在查找的过程中会遍历左边变量的原型链,直到找到右边变量的 `prototype`,找到返回true,未找到返回false。

Object.prototype.toString.call()原理:Object.prototype.toString 表示一个返回对象类型的字符串,call()方法可以改变this的指向,那么把Object.prototype.toString()方法指向不同的数据类型上面,返回不同的结果

标签:instanceof,检测,Object,数据类型,toString,call,prototype
From: https://www.cnblogs.com/yueyiviolet/p/16657726.html

相关文章

  • js数据类型
    JS数据类型分为两类:一类是基本数据类型,也叫简单数据类型,包含7种类型,分别是Number、String、Boolean、BigInt、Symbol、Null、Undefined。另一类是引用数据类型也叫复杂......
  • python变量和数据类型
    1.python变量含义变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。......
  • AttributeError: ‘_IncompatibleKeys’ object has no attribute torch的load_state
    很久没在CSDN写过东西了,今天被一个bug气到自己,太愚蠢了,记录一下。错误代码如下: #Errorcode!model=model.load_state_dict(state_dict_var)out=model(input......
  • CSS JS 规范+数据类型
    1、CSSJS规范+数据类型window.onload=function(){​//varstr='abc';​//varnum=123;​//varbool=true;​//varund=undefined;......
  • array、object、map、set常见方法
    引用数据类型有object,array,function一、数组一、创建数组1、使用数组字面量方法vararr1=[];//创建一个数组vararr2=[20];//创建一个包含1项数......
  • mybatis之MetaObject
    MetaObject元数据对象,底层肯定是反射,通过反射来进行设置值。这个可以来操作对象中的属性,哪怕是组合方式,无论有多少层,这个都可以来进行操作。举例如下所示:publicclass......
  • 简单介绍 js array.map、array.forEach、Object.assign、Object.keys用法
     1、 Object.assign,合并成新的对象formData.data=Object.assign({},toRaw(props.rowData)); 2、Object.keys,循环对象的key属性 Object.keys(enumObj).forEa......
  • c和c++基本数据类型
    必备知识常量在程序中不可以更改的量.一般以值的形式存在例子33.5’a‘变量在程序中可以改变的量注意必须先定义,才能使用定义变量:类型变量名例子inta......
  • ClickHouse(05)ClickHouse数据类型详解
    ClickHouse属于分析型数据库,ClickHouse提供了许多数据类型,它们可以划分为基础类型、复合类型和特殊类型。其中基础类型使ClickHouse具备了描述数据的基本能力,而另外两种类......
  • typeof 和 instanceof 判断值类型
    两者的作用typeof运算符能区分原始值和对象,并检测出原始值的类型。instanceof运算符可以检测一个对象是否是特定构造函数的一个实例。typeof值结果undefi......