详解详解JavaScript中中typeof与与instanceof用法用法
今天写JS代码,遇到动态生成多个名称相同的input复选按钮
需要判断其是否是数组,用到了if (typeof(document.MapCheckMgr.checkid)!="undefined")
以前用得少,就顺便查了一下关于typeof的那些事
typeof用以获取一个变量或者表达式的类型,typeof一般只能返回如下几个结果:
number,boolean,string,function(函数),object(NULL,数组,对象),undefined。
如:
alert(typeof (123));//typeof(123)返回"number"
alert(typeof ("123"));//typeof("123")返回"string"
我们可以使用typeof来获取一个变量是否存在,如if(typeof a!="undefined"){},而不要去使用if(a)因为如果a不存在(未声明)则会
出错,
正因为typeof遇到null,数组,对象时都会返回object类型,所以当我们要判断一个对象是否是数组时
或者判断某个变量是否是某个对象的实例则要选择使用另一个关键语法instanceof
instanceof用于判断一个变量是否某个对象的实例,如var a=new Array();alert(a instanceof Array); 会返回true,
同时alert(a instanceof Object)也会返回true;这是因为Array是object的子类。
再如:function test(){};var a=new test();alert(a instanceof test) 会返回true。
<script>
var str = new String();
function show(str1){
if(str1 instanceof String){
alert('1');
}else{
alert('0');
}
}
show(str);
str = "abccddd";
if(typeof str=='string'){alert(str);}
else{alert('0');}
</script>
关于关于typeof
typeof一元运算符,用来返回操作数类型的字符串。
typeof几乎不可能得到它们想要的结果。typeof只有一个实际应用场景,就是用来检测一个对象是否已经定义或者是否已经赋
值。而这个应用却不是来检查对象的类型。
Value Class Type
“foo” String string
new String(“foo”) String object
1.2 Number number
new Number(1.2) Number object
true Boolean boolean
new Boolean(true) Boolean object
new Date() Date object
new Error() Error object
[1,2,3] Array object
new Array(1, 2, 3) Array object
new Function(“”) Function function
/abc/g RegExp
object (function in
Nitro/V8)