相同点:
在JavaScript 中 ,typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型
不同点:
typeof 定义和用法:
- 返回值是一个字符串,用来说明变量的数据类型
- 一般只能返回如下几个结果:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"
- 对于 Array,Null,Object 等特殊对象使用 typeof 一律返回 object
- typeof 来获取一个变量是否存在,如 typeof a!="undefined"
//typeof的括号可以不用,直接在后面跟需要测试的内容
var a;
typeof a; //"undefined"
var b = {a:123};
typeof b; //"object"
typeof null; //"object"
Instanceof 定义和用法:
- 用于判断一个变量是否属于某个对象的实例,返回true或false
- 用来检测 constructor.prototype 是否存在于参数 obj 的原型链上(或者说:检测obj的原型链上是否存在constructor.prototype )
var a = new Array();
a instanceof Array //true
a instanceof Object //true
// 判断 foo 是否是 Foo 类的实例 , 并且是否是其父类型的实例
function Aoo(){}
function Foo(){}
Foo.prototype = new Aoo();//JavaScript 原型继承
var foo = new Foo();
console.log(foo instanceof Foo)//true
console.log(foo instanceof Aoo)//true
总结:typeof 用来判断变量的数据类型,Instanceof用来检查constructor.prototype 是否存在于参数 obj 的原型链上