typeof
typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。
返回以下结果:
“number” “string” “undefined” “boolean” “function” “object”
判断一个变量是否存在可以用typeof ,而不能用if(a),应为a未定义会报错。
经常会在js里用到数组,比如 多个名字相同的input, 若是动态生成的, 提交时就需要判断其是否是数组.
if(document.mylist.length != "undefined" ) {} //这个用法有误.
正确的是 if( typeof(document.mylist.length) != "undefined" ) {}
或 if( !isNaN(document.mylist.length) ) {}
typeof的运算数未定义,返回的就是 “undefined”.
typeof Null object
typeof Array object
instanceof
instanceof运算符用来判断一个构造函数的prototype属性(原型对象)是否存在另外一个要检测对象的原型链上。
var a=function(){
this.name="a"
}
var A=new a()
A instanceof a true
A instanceof Object true
isArray()
Array.isArray() 用于确定传递的值是否是一个 Array。
当检测Array实例时, Array.isArray 优于 instanceof,因为Array.isArray能检测iframes.
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
xArray = window.frames[window.frames.length-1].Array;
var arr = new xArray(1,2,3); // [1,2,3]
// Correctly checking for Array
Array.isArray(arr); // true
// Considered harmful, because doesn't work though iframes
arr instanceof Array; // false