浅谈JS中的typeof和instanceof的区别

sk  8月前
0

首先来说它俩的区别:

1.typeof是一个一元运算,放在一个运算数之前,运算数可以是任意类型。

2.instaceof是一个二元运算,它主要是判断一个变量是否是某个对象的实例。


接下来先说typeof的用法,它一般返回如下几个结果:“number”、“string”、“boolean”、“object”、“function”、“undefined”。

写法:typeof  x  ||  typeof(x);

一般在编程中获取一个变量是否存在就可以用typeof,如if(typeof a!="undefined"){code},而不是用if(a)判断,因为如果a不存在(未声明)则会出错。

注:对于array、null等特殊对象使用typeof返回的一律是object,这正是使用typeof的局限性。如果未定义返回的就是undefined。



--------------------------------------华丽的分割线-----------------------------------------------------



接着说说instanceof的用法:

写法: a instanceof b?alert("ok"):alert("no")


如:

var a = new Array();
a instanceof Array   //true
a instanceof Object   //true

注:谈到 instanceof 要多说一个问题,就是 function 的 arguments,大家也许都认为 arguments 是一个 Array,但如果使用 instaceof 去测试会发现 arguments 不是一个 Array 对象,尽管看起来很像。 

另外: 测试 var a=new Array();if (a instanceof Object) alert('Y');else alert('N'); 得'Y’ 

if (window instanceof Object) alert('Y');else alert('N'); 得'N' 

所以,instanceof 测试的 object 是指 js 语法中的 object,不是指 dom 模型对象。 使用 typeof跟instanceof有区别  alert(typeof(window)) 会得到object



如果还有别的欢迎补充。

回复 0  
游客  现在


二维码