比较数据类型做比较的三种方法typeofinstanceofObject.prototype.toString.call()
javascript七大类型
javascript的数据类型分为两类:原始类型和对象类型。
原始类型(6个)
四个普通类型:数字(number)、字符串(string)、布尔值(bool)、Symbol(ES6新增类型)
两个特殊原始值:空(null)、未定义(undefined)
对象类型(object)
每个属性都由 <key:value>构成,value可以是任意类型(包括对象类型)
typeof操作符获取类型
typeof 返回值有 objectbooleanundefinednumberstringsymbolfunction
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| console.log(typeof 42);
console.log(typeof 'blubber');
console.log(typeof true);
console.log(typeof declaredButUndefinedVariable);
let aa = null; console.log(typeof aa);
|
instanceof操作符
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
参考资料
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25大专栏 js类型比较n> 26
| function (){} function D(){}
var o = new C();
o instanceof C;
o instanceof D;
o instanceof Object; C.prototype instanceof Object
C.prototype = {}; var o2 = new C();
o2 instanceof C;
o instanceof C;
D.prototype = new C(); var o3 = new D(); o3 instanceof D; o3 instanceof C;
|
- 可以确定当前数据是否是某个对象(Object)
- 缺点:无法确定原始类型是否是原始类型
通过Object.prototype.toString.call()判断类型
这种判断算是比较靠谱的,可以判断出数据的七大类型以及内置对象(DateJson等)
1 2 3 4 5 6
| Object.prototype.toString.call(null); Object.prototype.toString.call(undefined); Object.prototype.toString.call(“abc”); Object.prototype.toString.call(123); Object.prototype.toString.call(true); Object.prototype.toString.call(Symbol());
|
js类型比较
原文:https://www.cnblogs.com/lijianming180/p/12037781.html