TIP
js判断对象类型的几种方法
一、调用instanceof
方法判断对象类型
instanceof 运算符左操作数是一个对象,右操作数标识对象的类。如果左侧的对象是右侧的类的实例,则表达式返回true,否则返回false。 或者说原型链上存在右侧对象
js
var d = new Date();
d instanceof Date; // true, d是由Date()创建的
d instanceof Object; // true, 所有对象都是Object的实例
d instanceof Number; // false
var a = [1, 2, 3];
a instanceof Array; // true
a instanceof Object; // true
a instanceof RegExp; // false
二、调用typeof
方法判断对象类型
typeof是一元运算符,放在其单个操作数前面,可以是任意类型,返回值为标识操作数类型的一个字符串
js
typeof undefined // "undefined"
typeof(null) // "object"
typeof true // "boolean"
typeof 任意数字或NaN // "number"
typeof 任意字符串 // "string"
typeof 任意函数 // "function"
typeof 任意内置对象(非函数) // "object"
三、调用toString()
方法判断对象类型
很多对象继承
toString()
方法被重写了,为了调用正确的版本,必须间接地调用Function.call()
方法,返回的字符串为[object class]
格式,所以提取第8个到倒数第2个位置之间的字符
js
function classof(o) {
if (o === null) return 'Null';
if (o === undefined) return 'Undefined';
return Object.prototype.toString.call(o).slice(8, -1);
}
classsof(1) // Number
classof('1') // String
classof({}) // Object
classof(function(){}) // Function