比较typeof与instanceof
Posted queenzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较typeof与instanceof相关的知识,希望对你有一定的参考价值。
相同点:
javascript中typeof和instanceof常用来判断一个变量是否为空,或者是什么类型的。
不同点:
typeof的定义和用法:
返回值是一个字符串,用来说明变量的数据类型。
细节:
1)、typeof一般只能返回如下几个结果:
number,boolean,string,function,object,undefined。
2)、typeof来获取一个变量是否存在,如if(typeof a!="undefined"){alert("ok")},而不要去使用if(a)因为如果a不存在(未声明)则会出错。
3)、对于Array,Null等特殊对象使用typeof一律返回object,这正是typeof的局限性。
Instanceof定义和用法:
instanceof用于判断一个变量是否属于某个对象的实例。
细节:
1)、instanceof返回布尔值true或者false。
2)、var a = new Array();
console.log(a instanceof Array) // true
console.log(a instanceof Object) // true
a是Array的实例,所以a instanceof Array为true。
但同时Array也是是object 的子类,所以a instanceof Object也为true。
3)、如果window instanceof Object返回false,此时这里的instanceof测试的object是指js语法中的object,不是指dom模型对象。
以上是关于比较typeof与instanceof的主要内容,如果未能解决你的问题,请参考以下文章
比较对象类型时 typeof 和 is 有啥区别? [复制]
JS == vs ===, typeof vs instanceof