要理解一点: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 引用的对象
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 引用的对象
o1.fn={}; 这其实就是创建了一个空 对象比如你可以这样建person对象var person = new Person(jack, 26); 也同样可以这样var person = {name:"jack", age: 26 };我想这么对比下你就明白 {} 是个空对象。所以typeof 就是object
这句不是已经把o1.fn重新赋值了吗