数据类型检测
1.instanceof
- 判断对象是不是构造函数的实例化
- 能够用来作判断已知对象的类型
- 对象与构造函数在原型链上是否有关系
function Person() {
this.name = "yaqi";
}
Person.prototype = {};
var p = new Person();
console.log(p instanceof Person);
var num = 1
var str = '传智播客'
var bool=false;
var arr=[];
var obj={name:'传智播客'};
var date = new Date();
var fn = function(){}
console.log('数据类型判断 - typeof')
console.log(typeof undefined)
console.log(typeof null)
console.log(typeof true)
console.log(typeof 123)
console.log(typeof "abc")
console.log(typeof function() {})
var arr=[];
console.log(typeof {})
console.log(typeof arr)
console.log(typeof unknownVariable)
3.toString.call()
- 通用但很繁琐的方法: 能够利用Object.prototype.toString.call(arg)来判断数据类型
console.log('数据类型判断 - toString.call')
console.log(toString.call(123))
console.log(toString.call('123'))
console.log(toString.call(undefined))
console.log(toString.call(true))
console.log(toString.call({}))
console.log(toString.call([]))
console.log(toString.call(function(){}))
console.log(Object.prototype.toString.call(str) === '[object String]')
console.log(Object.prototype.toString.call(num) === '[object Number]')
console.log(Object.prototype.toString.call(arr) === '[object Array]')
console.log(Object.prototype.toString.call(date) === '[object Date]')
console.log(Object.prototype.toString.call(fn) === '[object Function]')
var arr=[];
console.log('数据类型判断 - constructor')
console.log(arr.constructor === Array)
console.log(date.constructor === Date)
console.log(fn.constructor === Function)