js数据类型的检测方式
- typeof
- 能检测基本类型(null除外,它返回object)和函数,对于引用类型只返回object
- 也可以检测ES6新增的Symbol类型
console.log(typeof 123); //number
console.log(typeof 'abc'); //string
console.log(typeof true); //boolean
console.log(typeof undefined); //undefined
console.log(typeof null); //object
console.log(typeof [1,2,3]); //object
console.log(typeof {a:1,b:2,c:3}); //object
console.log(typeof function(){}); //function
console.log(typeof Symbol()); //symbol
- instanceof
- 用来检测一个对象是否为某个类(构造函数)的实例,返回布尔值
- 语法:
object instanceof constructor
console.log([1,2,3] instanceof Array); //true
console.log({a:1,b:2,c:3} instanceof Object) //true
// 定义一个类
class Cat {
constructor(name) {
this.name = name;
}
walk() {
console.log('I can walk');
}
}
// 实例化
let cat = new Cat('Vue');
// 检测
console.log(cat instanceof Cat); //true
3.constructor
- constructor是对象上的属性,指向构造函数
let num = 123;
console.log(num.constructor); //ƒ Number() { [native code] }
console.log('abc'.constructor); //ƒ String() { [native code] }
console.log(true.constructor); //ƒ Boolean() { [native code] }
console.log([1,2,3].constructor); //ƒ Array() { [native code] }
console.log({a:1,b:2,c:3}.constructor); //ƒ Object() { [native code] }
console.log(function(){}.constructor); //ƒ Function() { [native code] }
console.log(new Date().constructor); //ƒ Date() { [native code] }
console.log(/^[a-z]{2,5}$/.constructor); //ƒ RegExp() { [native code] }
console.log(Symbol().constructor); //ƒ Symbol() { [native code] }
4.toString.call()
- 相当于 Object.prototype.toString.call
console.log(toString.call(123)); //[object Number]
console.log(toString.call('abc')); //[object String]
console.log(toString.call(true)); //[object Boolean]
console.log(toString.call(undefined)); //[object Undefined]
console.log(toString.call(null)); //[object Null]
console.log(toString.call([1,2,3])); //[object Array]
console.log(toString.call({a:1,b:2,c:3})); //[object Object]
console.log(toString.call(function(){})); //[object Function]
console.log(toString.call(new Date())); //[object Date]
console.log(toString.call(/^[a-z]{2,5}$/)); //[object RegExp]