经过期末考试的摧残,没挂科的小文又回来了~~
今天我们来比较一下JavaScript中的typeof与instanceof······
相同点: 首先呢,它们的相同点在于——typeof和instanceof都常用于判断一个变量是什么类型.
不同点:
1、typeof: 用来说明变量的数据类型
typeof一般只能返回number,boolean,string,function,object,undefined这几种数据类型。
例如:
console.log(typeof 1) //number
console.log(typeof true) //boolean
console.log(typeof 'str') //string
function fun(){
}
console.log(typeof fun) //function
var a
console.log(typeof a) //undefined
console.log(typeof [1,2,3]) //object
console.log(typeof null) //object
console.log(typeof {}) //object
可以看出,typeof不能区分出数组、null和普通对象
2、instanceof: 用于判断一个变量是否属于某个对象的实例
例如:
console.log([1,2,3] instanceof Array) //true
console.log(null instanceof Object) //false
console.log({} instanceof Object) //true
可以看出,instanceof是可以区分出数组、null和普通对象的
//创建一个数组a
var a=new Array()
console.log(a instanceof Array) //true
console.log(a instanceof Object) //true
//数组a是Array的实例,所以返回true
//又因为Array是Object的一个子类,所以相当于a也是Object的实例,所以返回true
//构造函数创建一个Person对象
function Person(){
}
var p1=new Person()
console.log(p1 instanceof Person) //true