51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

js学习之call和apply

img

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

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

|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 | hljs javascript 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 | hljs javascript var Achao = { name: "Achao" } |

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

我们就可以这样

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

输出结果

image-20200904200840356

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

那么还有一个apply呢?

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

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

image-20200904201116252

否则会抛出异常

image-20200904201148445

赞(1)
未经允许不得转载:工具盒子 » js学习之call和apply