var name = "Window"; var oPerson = { name:"Bob", friend:{ name:"Jonh", sayHi:function(){ alert(this.name); } } }; var sayHi = oPerson.friend.sayHi; sayHi(); //"Window"
认证0级讲师
sayHi() = window.sayHi() = sayHi.apply(window)
实际上javascript调用方法a.func(函数)都等价于 func.apply(a),当然前提是要a有func这个属性或者a的原型链上有func属性(即可以获取到函数引用)。
如果省去a的话,就相当于func.apply(null)也就是func.apply(window)
sayHi() = window.sayHi() = sayHi.apply(window)
实际上javascript调用方法a.func(函数)都等价于 func.apply(a),当然前提是要a有func这个属性或者a的原型链上有func属性(即可以获取到函数引用)。
如果省去a的话,就相当于func.apply(null)也就是func.apply(window)