一、typeof
判断基本数据类型 ,对于引用数据类型全都返回Object
var name;
console.log(typeof name) //undefined
var obj = null ;
console.log(typeof obj) //object
console.log(typeof NAN) //number
二、 instanceof
判断已知对象类型, 表达为obj instanceof Object中,判断obj是否为Object的实例,返回布尔值
var str = "hello";
console.log(str instanceof String) //false
var str = new String("hello");
console.log(str instanceof String) // true
//Number、Boolean类型同理
var a = null
console.log(a instanceof null) //报错
console.log(a instanceof Object) // false
console.log([] instanceof Object) //true
var arr = new Array (1,2,3)
console.log(arr instanceof Array) //true
console.log({} instanceof Object) //true
function Fun(){};
var obj = new Fun()
console.log(obj instanceof Fun) //true
console.log(obj instanceof Object) //true
原理是构造函数的 prototype 属性是否出现在对象的原型链中的任何位置
三、constructor
console.log(("1").constructor === String); //true
四、Object.prototype.toString.call()
var a = Object.prototype.toString;
console.log(a.call("aaa")); // [ object String]