您的位置:首页 > 其它

数据类型检测

2016-02-09 11:25 309 查看
数据类型检测

1.instanceof

判断对象是否是构造函数的实例化

可以用来做判断已知对象的类型

对象与构造函数在原型链上是否有关系

1.    function Person() {
2.        this.name = "yaqi";
3.    }
4.    Person.prototype = {};
5.    var p = new Person();
6.    console.log(p instanceof Person); // true


2.typeof

数据类型判断

1.    var num = 1
2.    var str = '传智播客'
3.    var bool=false;
4.    var arr=[];
5.    var obj={name:'传智播客'};
6.    var date = new Date();
7.    var fn = function(){}
8.
9.    ///******************************************************************************
10.    // 数据类型判断 - typeof
11.     //*******************************************************************************
12.    console.log('数据类型判断 - typeof')
13.    console.log(typeof undefined)//'undefined'
14.    console.log(typeof null) // well-known bug
15.    console.log(typeof true) //'boolean'
16.    console.log(typeof 123)  //'number'
17.    console.log(typeof "abc")  //'string'
18.    console.log(typeof function() {}) //'function'
19.    var arr=[];
20.    console.log(typeof {}) //'object'
21.    console.log(typeof arr)//'object'
22.    console.log(typeof unknownVariable) //'undefined'
23.    //    在使用 typeof 运算符时采用引用类型存储值会出现一个问题,
24.    //    无论引用的是什么类型的对象,它都返回 "object"。


3.toString.call()

通用但很繁琐的方法: 可以利用Object.prototype.toString.call(arg)来判断数据类型

1.    console.log('数据类型判断 - toString.call')
2.    console.log(toString.call(123))          //[object Number]
3.    console.log(toString.call('123'))        //[object String]
4.    console.log(toString.call(undefined))    //[object Undefined]
5.    console.log(toString.call(true))         //[object Boolean]
6.    console.log(toString.call({}))           //[object Object]
7.    console.log(toString.call([]))           //[object Array]
8.    console.log(toString.call(function(){})) //[object Function]
9.
10.
11.    console.log(Object.prototype.toString.call(str) === '[object String]')   //-------> true;
12.    console.log(Object.prototype.toString.call(num) === '[object Number]')   //-------> true;
13.    console.log(Object.prototype.toString.call(arr) === '[object Array]')    //-------> true;
14.    console.log(Object.prototype.toString.call(date) === '[object Date]')     //-------> true;
15.    console.log(Object.prototype.toString.call(fn) === '[object Function]') //-------> true;
16.


4.constructor

根据对象的constructor来判断

1.    //    根据对象的constructor判断: constructor
2.    var arr=[];
3.    console.log('数据类型判断 - constructor')
4.    console.log(arr.constructor === Array)   //----------> true
5.    console.log(date.constructor === Date)   //-----------> true
6.    console.log(fn.constructor === Function) //-------> true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: