typeof 和 instanceof 的区别

在JavaScript中我们想得到一个变量的类型,我们一般会用typeof 得到这个类型的 字符串,但是对于引用类型,typeof始终会返回一个"object",在我们js中有十个内置对象,我们无法分清楚他们具体是哪个对象,所有instanceof出现了。

1.instanceof方法能准备的识别变量的所属具体对象,示例

var num = new Number(10);
console.log(num instanceof Number);//返回true
var num = 10;
console.log(typeof num); // number

instanceof虽然不像typeof那样灵活,但是在typeof返回"object"的时候,instanceof可以准确的分清楚变量所属的对象。

2.通俗来讲,instanceof就是判断变量是否属于某种类型。

function Foo(){}
var foo = new Foo();
console.log(foo instanceof Foo); // true

更重的一点是 instanceof 可以在继承关系中用来判断一个实例是否属于它的父类型

3.在继承关系中instanceof的作用

function Aoo(){};
function Foo(){};
Foo.prototype = new Aoo();//原型继承

var foo = new Foo();
console.log(foo instanceof Foo);// true
console.log(foo instanceof Aoo);//true

在多层关系中也可以用instanceof

console.log(Object instanceof Object);//true 
console.log(Function instanceof Function);//true 
console.log(Number instanceof Number);//false 
console.log(String instanceof String);//false 
 
console.log(Function instanceof Object);//true 
 
console.log(Foo instanceof Function);//true 
console.log(Foo instanceof Foo);//false

 

posted @ 2018-07-13 08:57  AmbitiousZy  阅读(723)  评论(0编辑  收藏  举报