记住这两个法则:
- 一:在函数中直接调用就是window对象的调用
function get(content) {
console.log(content);
}
get('你好');
// 其实就是: 函数作为对象的方法被调用(谁调用我 我就指向谁)
get.call(window,'你好');
- 二: 函数作为对象的方法被调用(谁调用我 我就指向谁)
var person = {
name:'张三',
run:function (time) {
console.log(`${this.name} 在跑步 最多${time}min就不行了`)
}
}
person.run(30);
person.run.call(person,30);
题目
var name = 222;
var a = {
name:111,
say:function(){
console.log(this.name)
}
}
var fun = a.say;
fun();///222 fun.call(window)
a.say();//111 a.say.call(a)
var b = {
name:333,
say:function(fun){
fun();
}
}
b.say(a.say);//222 fun.call(window)
b.say = a.say;
b.say();//333 b.say(b)