首页 > 编程语言 >说一说JavaScript有几种方法判断变量的类型?

说一说JavaScript有几种方法判断变量的类型?

时间:2023-01-25 19:47:46浏览次数:47  
标签:说一说 检测 JavaScript 数据类型 几种 Object toString call prototype

    typeof、instanceof、Object.prototype.toString.call()(对象原型链判断方法)、 constructor (用于引用数据类型)

        标准回答 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()方法指向不同的数据类型上面,返回不同的结果

标签:说一说,检测,JavaScript,数据类型,几种,Object,toString,call,prototype
From: https://www.cnblogs.com/jycom/p/17067183.html

相关文章

  • JavaScript学习笔记—对象的解构
    constobj={name:"孙悟空",age:18,gender:"男"};let{name,age,gender}=obj;//声明变量同时解构变量console.log(name,age,gender);//孙悟空18男let......
  • 说一说JS数据类型有哪些,区别是什么?
    Number、String、Boolean、BigInt、Symbol、Null、Undefined、Object、8种标准回答JS数据类型分为两类:一类是基本数据类型,也叫简单数据类型,包含7种类型,分别是Number、St......
  • JavaScript学习笔记—数组的解构赋值
    constarr=["孙悟空","猪八戒","沙和尚"];let[a,b,c]=arr;//解构赋值console.log(a,b,c);//孙悟空猪八戒沙和尚let[d,e,f,g]=["唐僧","白骨精",......
  • JavaScript 对象合并
    JavaScript中有多种方法可以合并对象。1、使用Object.assign()方法:它可以将一个或多个对象的属性复制到目标对象中。例如:constobj1={a:1,b:2};constobj2=......
  • JavaScript 数组合并
    JavaScript中有多种方法可以将多个数组合并成一个数组。1、使用Array.prototype.concat()合并:concat()方法可以将多个数组合并成一个新数组。letarr1=[1,2,3];......
  • JavaScript 数组去重
    JavaScript中有多种方法可以实现数组去重,下面是几种常用的方法:1、使用Set去重:Set数据结构中不能有重复元素,可以将数组转成Set类型,再转回数组。letarr=[1,2,3,4,......
  • JavaScript 排序算法
    JavaScript提供了Array.prototype.sort()方法来对数组中的元素进行排序。默认情况下,sort()方法使用字典序来排序字符串。如果要按照数字大小进行排序,需要传递一个比较......
  • JavaScript 运算符&算数运算符
    一、运算符运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。JavaScript中常用的运算符有:算数运算符递增和递减运算符比较运算符逻辑运算符赋......
  • JavaScript学习笔记—函数的bind
    bind():函数的方法,可以用来创建一个新的函数bind可以为新函数绑定thisbind可以为新函数绑定参数functionfn(a,b,c){console.log("fn执行了~~~",this);consol......
  • JavaScript学习笔记—函数中的call和apply
    调用函数除了通过函数()这种形式外,还可以通过其他的方式来调用函数,比如可以通过调用函数的call()和apply()两个方法来调用函数函数.call()函数.apply()call和apply除......