注意:不同window之间和跨iframe之间是不可以使用instanceof的,虽然看着是同一个对象但是在不同window之间和跨iframe之间是不同的对象,每个iframe下都有自己的一套原型链,跨frame实例化的对象彼此是不共享原型链,因此会返回false
3.Object.prototype.toString 函数方法
Object.prototype.toString.call()或者Object.prototype.toString.apply()
例如:
Object.prototype.toString.call([]) //"[object Array]"
Object.prototype.toString.call(function(){}) //"[object Function]"
Object.prototype.toString.call(undefined) //"[object Undefined]"
Object.prototype.toString.call(null) //"[object Null]"
注意:1.解决了跨iframe 失效的问题
2.IE 6,7,8下 Object.prototype.toString.call(null或undefined) //"[object Object]"
4.constructor方法
function A(){};
function B(){};
A.prototype = new B();
var aObj = new A();
--------------------------------
aObj.constructor === B; //true;
aObj.constructor === A; //false;
注意:类继承时会出现问题
5.duck type(鸭子类型)
比如检测数组时,我们可以检测他有没有push()方法等等