美文网首页
数据类型检测的四种方法

数据类型检测的四种方法

作者: 空压机百科 | 来源:发表于2019-12-26 23:53 被阅读0次

1、typeof 用来检测数据类型的运算符
使用 typeof 检测数据类型,首先返回的都是一个字符串,其次字符串中包含了对应的数据类型
例如:"number"、"string"、"boolean"、“undefined”、"function"、"object"
案例:

console.log(typeof typeof typeof function(){})  === "string"

局限性:
a、typeof null === "object"
b、不能具体细分是数组、正则还是对象中其他值,使用 typeof 检测数据类型对于对象数据类型中的值返回结果都是"object"

2、instanceof 检测某一个实例是否属于某个类

var obj = [12,23]
console.log(obj instanceof Array)  // true
console.log(obj instanceof RegExp)  // false

局限性:
a、不能用来处理字面量方式创建出来的基本数据类型值,对于基本数据类型来说,字面量方式创建出来的结果和实例方式创建出来的结果是有区别的。严格意义上来说只有实例创建出来的结果才是标准的对象数据类型值,字面量方式创建出来的基本数据类型值,是不严谨的实例,
b、instanceof 特性,只要在当前实例的原型上,检测出来的结果都是 true
在类的原型继承中,检测出来的结果不一定准确,例如:

function Fn(){}
Fn.prototype = new Array;
var f = new Fn // f.__proto__ -> Fn.prototype -> Array.prototype -> Object.prototype
console.log(f instanceof Array) // true

局限性:如果把类的原型进行重写,在重写的过程中很有可能出现把之前的 constructor 给覆盖了,这样检测出来的结果就是不准确的。

console.log(1 instanceof Number)  // false
console.log(new Number(1) instanceof Number)  //true

3、constructor 构造函数 作用和 instanceof 非常相似
可以处理基本数据类型检测
用 constructor 检测 Object 和 instanceof 不一样,一般情况下检测不了

var obj = [];
console.log(obj.constructor === Array);  // true
console.log(obj.constructor === Object)  // false
var num = 1;
console.log(num.constructor === Number)  // true

4、Object.prototype.toString.call() 是最准确最常用方法
首先获取 Object 原型上的 toString 方法,让方法执行,并且改变方法中的 this 关键字指向
Object.prototype.toString 并不是转换为字符串,而是返回当前方法的执行主体(方法中的 this)所属类的详细信息

var obj = {name:"张三"}
console.log(obj.toString())  // [object Object]
console.log((Math.toString())  // [object Math]

console.log(({name:"张三"}).toString())理解:toString()中的 this 是 obj,返回的是 obj 所属类的信息,[object Object] 其中第一个 object 代表当前实例是对象数据类型的(这个是固定死的),第二个 Object 代表的是 obj 所属的类是 Object。例如console.log((Math.toString()) // [object Math]

console.log(Object.prototype.toString.call(1));  // [object Number]
console.log(Object.prototype.toString.call("张三"));  // [object String]
console.log(Object.prototype.toString.call(true));  // [object Boolean]
console.log(Object.prototype.toString.call(undefined));  // [object Undefined]
console.log(Object.prototype.toString.call(null));  // [object Null]
console.log(Object.prototype.toString.call(function(){}));  // [object Function]
console.log(Object.prototype.toString.call([]));  // [object Array]
console.log(Object.prototype.toString.call(/^$/));  // [object RegExp]

理解 toString:
对于 Number、String、Boolean、Array、RegExp、Date、Function 原型上的 toString 方法都是把当前数据类型转换为字符串类型。

相关文章

  • JavaScript数据类型检测总结

    在js中,有四种用于检测数据类型的方式,分别是: typeof用来检测数据类型的运算符 instanceof 检...

  • JavaScript数据类型检测总结

    在js中,有四种用于检测数据类型的方式,分别是: typeof用来检测数据类型的运算符 instanceof 检...

  • 数据类型检测方法总结typeof OR call(修改this指

    使用typeof方法检测数据类型 方法不严谨,在检测数组和对象是都是object 类型的 万能的数据类型检测方式 ...

  • 前端学习笔记(持续更新)

    Javascript 浏览器常用的输出方式 数据类型检测的四种方法 DOM及相关操作 数学函数Math 日期对象D...

  • 20170710笔记

    数据类型检测有4种方法 type of 主要用于基本数据类型检测,不能具体检测出引用数据类型 constructo...

  • 2019-03-19 js practice three

    数据类型检测有4种方法 typeof 主要用来检测基本数据类型,不能具体检测出引用数据类型 constructor...

  • o1

    概念 检测方法 转换方法 数据类型: 基本数据类型 undefined Null Boolean Stri...

  • JS 数据类型的四种检测方法

    简介 我们在代码中经常要对数据类型进行判断,大家熟知的应该是 typeof,那么它有什么不足,有没有其他方法来进行...

  • 数据类型检测的四种方法

    1、typeof 用来检测数据类型的运算符使用 typeof 检测数据类型,首先返回的都是一个字符串,其次字符串中...

  • 2017-12-26

    js中判断数据类型的几种方法(一) js中可以判断数据类型的方法有四种:typeof、toString、const...

网友评论

      本文标题:数据类型检测的四种方法

      本文链接:https://www.haomeiwen.com/subject/brkqoctx.html