js学习之call和apply

2022-08-16 16:30:53 浏览数 (1)

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

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

代码语言:javascript复制
var ruben = {
    say: function (word) {
        if (this.name == null) {
            this.name = "ruben";
        }
        return this.name   "说:"   word;
    }
}
var whatRubenSaid = ruben.say("做猪呢,最重要的是开心");
console.log(whatRubenSaid);

输出结果

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

代码语言:javascript复制
var Achao = {
    name: "Achao"
}

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

我们就可以这样

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

输出结果

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

那么还有一个apply呢?

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

代码语言:javascript复制
var Hegel = {
    name: "黑格尔"
}
var whatHegelSaid = ruben.say.apply(Hegel, ["只有永远躺在泥坑里的人,才不会再掉进坑里。"])
console.log(whatHegelSaid);

否则会抛出异常

0 人点赞