img

贪玩蓝月真好玩,但学习还是要继续的

我们平时调用一个js函数是这样的

1
2
3
4
5
6
7
8
9
10
var ruben = {
say: function (word) {
if (this.name == null) {
this.name = "ruben";
}
return this.name + "说:" + word;
}
}
var whatRubenSaid = ruben.say("做猪呢,最重要的是开心");
console.log(whatRubenSaid);

输出结果

image-20200904200656453

那么我们现在新创建一个对象

1
2
3
var Achao = {
name: "Achao"
}

如果我们想在Achao里调用ruben里的say函数

我们就可以这样

1
2
var whatAchaoSaid = ruben.say.call(Achao, "村头恶霸华农、刑部尚书手工耿、木瓜大盗莫叔、非洲人犯朱一旦")
console.log(whatAchaoSaid);

输出结果

image-20200904200840356

这就是call函数的使用方式和场景了

那么还有一个apply呢?

call不同,它调用方法给的参数需要是一个数组

1
2
3
4
5
var Hegel = {
name: "黑格尔"
}
var whatHegelSaid = ruben.say.apply(Hegel, ["只有永远躺在泥坑里的人,才不会再掉进坑里。"])
console.log(whatHegelSaid);

image-20200904201116252

否则会抛出异常

image-20200904201148445