要理解一点:JavaScript的变量名都只是名称而已。 typeOf 运算会查找其所指向的具体对象。
function Obj(){
                this.a=[]; //实例变量
                this.fn=function(){ //实例方法
                   // 这个构造函数,将对象的fn属性默认指向一个函数
                }
            }            var o1=new Obj();
            o1.a.push(1);
            o1.fn={};   // 人为将属性名 fn 指向一个对象
            console.log(o1.a); //[1]
            console.log(typeof o1.fn); //object
            var o2=new Obj();
            console.log(o2.a); //[]
            console.log(typeof o2.fn); //function,因为没有改变 fn 引用的对象

解决方案 »

  1.   

    我觉得楼主问着问题主要疑惑在 不熟悉这种写法
    o1.fn={}; 这其实就是创建了一个空 对象比如你可以这样建person对象var person = new Person(jack, 26);  也同样可以这样var person = {name:"jack", age: 26 };我想这么对比下你就明白 {} 是个空对象。所以typeof 就是object
      

  2.   

    console.log(o1.fn,o2.fn);这样输出 不就 了然了
      

  3.   

    o1.fn={}
    这句不是已经把o1.fn重新赋值了吗