typeof 和instanceof

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typeof 和instanceof相关的知识,希望对你有一定的参考价值。

1.typeof

首先来看typeof的测试结果

 1 //1.typeof 判定 非构造函数 数据类型    
 2 var a = ‘123‘;        //typeof a === string
 3 var b = 123;          //typeof b === number
 4 var c = true;          //typeof c === boolean
 5 var d = function(){};//typeof d === function
 6 var e = {};             //typeof e === object
 7 var f = undefined;     //typeof f === undefined
 8 var g = null;         //typeof g === object
 9 var h = ‘‘;             //typeof h === string
10 var i;                 //typeof i === undefined
11 var j = [];             //typeof j === object
12 结论:typeof 判定非构造函数数据类型, 能识别的类型为:string,number,boolean,function,undefined,object 
13 其中对象,数组,null都判定为object,也就是说typeof不识别Array,typeof arr === Array返回值为flase
14 
15 //2.typeof 判定 构造函数 数据类型  
16 var a = new String(‘123‘);        //typeof a === object
17 var b = new Number(123);          //typeof b === object
18 var c = new Boolean(true);          //typeof c === object
19 var d = new function(){};         //typeof d === object
20 var e = new Object();             //typeof e === object     
21 var f = new Array();             //typeof f === object
22 var g = new Date();                 //typeof g === object
23 结论:typeof 判定构造函数数据类型全部返还object

 

2.instanceof

instanceof运算符可以用来判断某个构造函数的prototype属性是否存在另外一个要检测对象的原型链上。

实例一:普遍用法

A instanceof B :检测B.prototype是否存在于参数A的原型链上.

function Ben() {
}
var ben = new Ben();
console.log(ben instanceof Ben);//true

实例二:继承中判断实例是否属于它的父类

function Ben_parent() {}
function Ben_son() {}
Ben_son.prototype = new Ben_parent();//原型继承
var ben_son = new Ben_son();
console.log(ben_son instanceof Ben_son);//true
console.log(ben_son instanceof Ben_parent);//true

 实例三:复杂用法

function Ben() {}
console.log(Object instanceof Object);     //true
console.log(Function instanceof Function); //true
console.log(Function instanceof Object);   //true
console.log(Ben instanceof Function);      //true
console.log(String instanceof String);   //false
console.log(Boolean instanceof Boolean); //false
console.log(Ben instanceof Ben);         //false

  

 

以上是关于typeof 和instanceof的主要内容,如果未能解决你的问题,请参考以下文章

instanceof和typeof运算符的区别详解

javascript typeof 和 instanceof 的区别和联系

typeof和instanceof的区别

tips instanceof运算符和typeof运算符的区别

javascript typeof 和 instanceof 的区别和联系

js中typeof和instanceof用法区别