js类型检测的几种方式盘点
栏目: JavaScript · 发布时间: 7年前
内容简介:开始之前,必须要知道js中关于类型的定义。js中有6种基本类型,null,undefined,boolean,string,number,symbol(es6新增的类型)。还有一种引用类型(复杂类型)是object。像是{},function函数,[]数组都是对象。首先,先定义几种object类型返回值类型:string
开始之前,必须要知道js中关于类型的定义。js中有6种基本类型,null,undefined,boolean,string,number,symbol(es6新增的类型)。还有一种引用类型(复杂类型)是object。像是{},function函数,[]数组都是对象。
首先,先定义几种object类型
var obj = {};
function fun(){};
var arr = [];
1.typeof
console.log(typeof null); //object
console.log(typeof fun); //function
console.log(typeof obj); //object
console.log(typeof arr); //object
console.log(typeof "abc"); //string
console.log(typeof 23); //number
console.log(typeof false); //boolean
返回值类型:string
总结:一般只用来检测基本数据类型。function能正确返回,像是数组和对象都只会返回object。null作为基本类型也返回object,因为null在js中的定义就是用来表示一个空对象指针。
2.instanceof
console.log("string" instanceof String); //false
console.log(23 instanceof Number); //false
console.log(false instanceof Boolean); //false
console.log(null instanceof Object); //false
console.log(obj instanceof Object); //true
console.log(fun instanceof Object); //true
console.log(fun instanceof Function); //true
console.log(obj instanceof Function); //false
console.log(arr instanceof Object); //true
console.log(arr instanceof Array); //true
返回值类型:boolean
总结:一般用来检测object,无法正确检测基本数据类型。但是注意,因为function和array都是object类型。除了相对应的Function和Array会返回true以外,instanceof Object也会返回true。
3.Object.prototype.toString.call()
console.log(Object.prototype.toString.call("rerqw")); //[object String]
console.log(Object.prototype.toString.call(16)); //[object Number]
console.log(Object.prototype.toString.call(false)); // [object Boolean]
console.log(Object.prototype.toString.call(null)); //[object Null]
console.log(Object.prototype.toString.call(undefined)); //[object Undefined]
console.log(Object.prototype.toString.call(fun)); //[object Function]
console.log(Object.prototype.toString.call(arr)); //[object Array]
console.log(Object.prototype.toString.call(obj)); //[object Object]
返回值类型:string
总结:这应该是最好的返回方式了。虽然返回的样式怪怪的。但是能正确返回基本类型和各种object类型。
4.Object.prototype.toString.apply()
用法和上面Object.prototype.toString.call()一样,就是call换成apply。返回结果也一样。
至于为什么call和apply实现效果一样。又是另一个更复杂的问题,改天我会写一篇文章,详细分析apply(),call(),bind()三种方法。会回来贴上地址的。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
How to Build a Billion Dollar App
George Berkowski / Little, Brown Book Group / 2015-4-1 / USD 24.95
Apps have changed the way we communicate, shop, play, interact and travel and their phenomenal popularity has presented possibly the biggest business opportunity in history. In How to Build a Billi......一起来看看 《How to Build a Billion Dollar App》 这本书的介绍吧!