var arr=[1,2,3]; //Array.prototype
var obj={}; //Object.prototype
var fun=function(){}; //Function.prototype
/*typeof无法区分普通对象和数组*/
console.log(typeof arr); //object 判断失败
/*isPrototypeOf():判断数组类型的原型是不是arr的父级对象*/
if(Array.prototype.isPrototypeOf(arr)){
console.log("arr是数组");
}
/*instanceof判断arr是否由数组类型创建出来*/
if(arr instanceof Array){
console.log("arr是数组");
}
/*getPrototypeOf:判断arr的父级对象是不是数组类型的原型*/
if(Object.getPrototypeOf(arr)==Array.prototype){
console.log("arr是数组");
}
/*调用Object的原型中的原生toString输出对象的类型名*/
console.log(Object.prototype.toString.call(arr));
constructor 属性。 JavaScript中,每个对象都有一个constructor属性,它引用了初始化该对象的构造函数,常用于判断未知对象的类型。如给定一个求知的值 通过typeof运算符来判断它是原始的值还是对象。如果是对象,就可以使用constructor属性来判断其类型。
console.log(typeof arr=="object"&&arr.constructor==Array)
原文:http://www.cnblogs.com/12606huchao/p/4964748.html