01.【JS基础】数据类型的判断方法

2016-09-09  本文已影响0人  唐唐_sugar

1.typeof方法

此类方法适用于非object的类型判断,返回变量类型。

var str = "abc";
var num = 123;
var arr = [1,2,3];
var boolean = true;
var obj = {a:1,b:2,c:3};
var fn1 = function(){alert(123);};
var date = new Date ();
var aaa;
var bbb = null;

console.log(typeof str);       //string
console.log(typeof num);       //number
console.log(typeof arr);       //object
console.log(typeof boolean);    //boolean
console.log(typeof obj);       //object
console.log(typeof fn1);       //function
console.log(typeof date);       //object
console.log(typeof aaa);       //undefined
console.log(typeof bbb);       //object

注意:

2.instanceof方法——判断对象类型(基于原型链的操作符)

此方法适用于已知变量类型为object,判断该对象的具体类型(注意大小写),返回值为布尔值。

obj instanceof Object

console.log(arr instanceof Array);      //true
console.log(fn1 instanceof Function);   //true
console.log(date instanceof Date);      //true
console.log(obj instanceof Object);     //true

3.constructor方法

类似于instanceof方法,但在继承时会出错,慎用

console.log(arr.constructor === Array);      //true
console.log(fn1.constructor ===  Function);   //true
console.log(date.constructor ===  Date);      //true
console.log(obj.constructor === Object);     //true

在出现继承时:

    
function Student () {};       //构造函数Student
function Person () {};        //构造函数Person 

Student.prototype = new Person();   //Student继承自Person
var Jack = new Student();       //通过构造函数Student创建一个名为Jack的对象

console.log(Jack.constructor === Person);       //true
console.log(Jack.constructor === Student);      //flase

//但用instanceof方法时,对象直接继承和间接继承都报true
console.log(Jack instanceof Person);       //true
console.log(Jack instanceof Student);      //true

4.prototype方法(通用)

此方法为通用方法,但较繁琐,注意大小写

console.log(Object.prototype.toString.call(str);        //[Object String]
console.log(Object.prototype.toString.call(num);        //[Object Number]
console.log(Object.prototype.toString.call(fn);        //[Object Function]
console.log(Object.prototype.toString.call(obj);        //[Object Object]
console.log(Object.prototype.toString.call(date);        //[Object Date]
console.log(Object.prototype.toString.call(aaa);        //[Object Undefined]
console.log(Object.prototype.toString.call(bbb);        //[Object Null]
console.log(Object.prototype.toString.call(arr);        //[Object Array]
console.log(Object.prototype.toString.call(boolean);    //[Object Boolean]

小结:

上一篇 下一篇

猜你喜欢

热点阅读