函数名直接调用 函数里的this都指向window
function get(content){
console.log(content)
}
get('世界')
// 等同于
get.call(window,'世界')
函数作为对象的方法被调用(谁调用 指向谁)
var oerson = {
name:'张三',
run:function (){
console.log(this.name)
}
}
person.run()
// 等同于
person.run.call(person)
如果是事件处理函数,里面的this指向事件源
阿里面试题
var name = 222
var a = {
name: 111,
say: function () {
console.log(this.name)
}
}
var fun = a.say
fun() // 指向window 222
a.say() // 指向a 111
var b = {
name: 333,
say: function(fun) {
fun()
}
}
b.say(a.say) // 实质上是fun()的调用 所以指向window 222
b.say = a.say
b.say() // 指向b 333