判断类型的方式

212 阅读1分钟

判断数据类型的方式

typeof 的作用是用来区分数据的类型

typeof 用法

1. typeof(N)
2. typeof N

数据类型包括六大类:

number、string、boolean、undefined、object、null

1.number

特殊:NaN,0

console.log(typeof(123));  -- > number
console.log(typeof(NaN));  -- > number
console.log(typeof(0));    -- > number

2.string

console.log(typeof('a'));  -- > string

3.boolean

console.log(typeof(false)); -- > boolean
console.log(typeof(true));  -- > boolean

4.undefined

1.变量未声明时
console.log(typeof(a));  -- > undefined

2.变量的值就是undefined时
var a = undefined;
console.log(typeof(a));  -- > undefined

5.object

特殊: null,数组

var a = {};//对象
console.log(typeof(a));   -- > object

var b = [];//数组
console.log(typeof(b));    -- > object

console.log(typeof(null));  -- > object  //特殊的

6.function

var a = function () {}; //函数/方法
console.log(typeof(a)); -- > unfction

注:typeof返回的是一个string

①   console.log(typeof(a));         -- > undefined
②   console.log(typeof(undefined)); -- > undefined
③   console.log(typeof(typeof(a)));  -- > string

其他类型判断方法

instanceof

通过instanceof返回继承的实例,用来判断这个构造函数的原型是否在给定对象的原型链上,还可以返回父级的实例

console.log(
    123 instanceof Number, //false
    'dsfsf' instanceof String, //false
    false instanceof Boolean, //false
    [1,2,3] instanceof Array, //true
    {a:1,b:2,c:3} instanceof Object, //true
    function(){console.log('aaa');} instanceof Function, //true
    undefined instanceof Object, //false
    null instanceof Object, //false
    new Date() instanceof Date, //true
    /^[a-zA-Z]{5,20}$/ instanceof RegExp, //true
    new Error() instanceof Error //true
)

constructor

constructor是prototype对象上的属性,指向构造函数。根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,就去原型链上寻找,因此,实例对象也是能使用constructor属性的

**undefined和null没有constructor属性 **

console.log(new Number(123).constructor)
//ƒ Number() { [native code] }

toString

可以通过toString() 来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,传递要检查的对象作为第一个参数,称为thisArg。

var toString = Object.prototype.toString;

toString.call(123); //"[object Number]"
toString.call('abcdef'); //"[object String]"
toString.call(true); //"[object Boolean]"
toString.call([1, 2, 3, 4]); //"[object Array]"
toString.call({name:'wenzi', age:25}); //"[object Object]"
toString.call(function(){ console.log('this is function'); }); //"[object Function]"
toString.call(undefined); //"[object Undefined]"
toString.call(null); //"[object Null]"
toString.call(new Date()); //"[object Date]"
toString.call(/^[a-zA-Z]{5,20}$/); //"[object RegExp]"
toString.call(new Error()); //"[object Error]"