typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。
它返回值是一个字符串,该字符串说明运算数的类型。(typeof 运算符返回一个用来表示表达式的数据类型的字符串。 )
typeof其实就是判断参数是什么类型的实例,就一个参数
typeof 一般只能返回如下几个结果:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。
运算数为数字 typeof(x) = "number"
字符串 typeof(x) = "string"
布尔值 typeof(x) = "boolean"
对象,数组和null typeof(x) = "object"
函数 typeof(x) = "function"
对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。
why 经常会在js里用到数组,比如 多个名字相同的input, 若是动态生成的, 提交时就需要判断其是否是数组.
正确的是 if( typeof(document.mylist.length) != "undefined" ) {}
或 if( !isNaN(document.mylist.length) ) {}
typeof的运算数未定义,返回的就是 "undefined".
instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
why
- 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
alert(a==b); //flase