数据类型检测
数据类型检测
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