1.typeof操作符返回一个字符串,指导未经盘算的操作数的范例。
语法:type opreand
参数: opreand是一个表达式,示意对象或许原始值,其范例将被返回。
形貌:
范例 效果
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Symbol(ECMAScript 6 新增) "symbol"
函数对象 "function"
任何其他对象 "object"
2.typeof 关于一些特别数据时的表现
typeof (new Number(1)); //效果并非设想中的"number"而是"object"
typeof (new String("hello")); //同理效果仍然是"object"
tyoeof (new Boolean(true)); //返回"object"
typeof null; //返回也为"object"
3.instanceof 运算符用来测试一个对象在其原型链中是不是存在一个组织函数的 prototype 属性。
语法:object instanceof constructor
参数:object 要检测的对象 constructor 某个组织函数
经由过程这个运算符我们就能够用来检测object真正的数据范例
(new Number(1)); instanceof Number //true
(new Array("2,3")); instanceof Array //true
(new String("hello")); instanceof String //true
然则如果是null的话,彷佛就没办法处理了呢。我们能够提早运用对象的toString要领推断是不是为null
4.更好的做法是借用Object.prototype.toString
Object.prototype.toString.call(1); // "[object Number]"
Object.prototype.toString.call(new Number(1)); // "[object Number]"
Object.prototype.toString.call("hello"); // "[object String]"
Object.prototype.toString.call(function(){}); // "[object function]"
Object.prototype.toString.call(null); // "[object Null]"
所以我们能够封装一个应用Object.prototype.toString来推断数据范例的函数。
function classOf(obj) {
return Object.prototype.toString.call(obj).slice(8, -1);
};
classOf(null); //'Null'