一.普通的函数调用
function get(content){
console.log(content);
}
get('你好')
get.call(window,'你好')
view:
二.函数作为对象的方法被调用(谁调用我,我指向谁)
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();
a.say()
var b = {
name: 333,
say: function (fun) {
fun();
},
};
b.say(a.say);
b.say = a.say;
b.say();
通过上述的两道题我们在做我们手上的这道题。
总共有四次调用,
解析:
fun()=======================>fun.call(window)-----------------------222
a.say()=====================>a.say.call(a)---------------------------111
fun()=======================>fun.call(window)-----------------------222
a.say()=====================>a.say.call(b)------------------------------333
输出的结果: