例如漏写了new运算符去调用某个构造器, 此时构造器内部可以通过 instanceof 来判断.(java中功能类似)
function f(){ if(this instanceof arguments.callee) console.log('此处作为构造函数被调用'); else console.log('此处作为普通函数被调用'); } f();//此处作为普通函数被调用 new f();//此处作为构造函数被调用
对比: typeof 则用以获取一个变量或者表达式的类型, 一般只能返回如下几个结果:
1、typeof 对于基本类型,除了 null 都可以显示正确的类型
2、typeof 对于对象,除了函数都会显示 object
3、对于 null 来说,虽然它是基本类型,但是会显示 object
总的来说:number,boolean,string,function(函数),object(NULL,数组,对象),undefined。
十一、参考
1、《JavaScript高级程序设计》
2、深入理解JavaScript系列(5):强大的原型和原型链 - 汤姆大叔 - 博客园