首页 > 代码库 > js兵器谱之魔法召唤师:call / apply

js兵器谱之魔法召唤师:call / apply

ps:以下为笔者在爬莲花山时,大脑某些神经元突起闪现火花,最后转换为一堆文字片段

当卷福,or不,应该是当奇异博士(doctor strange)被 ancient one扔在珠穆朗玛山顶快要冻死的时候,情急之下,他终于召唤出了传送门。

魔法的世界,无处不在,作为麻瓜的我,学了js后,猛然间发现,js中居然也是魔法的一部分。

call/apply,其实是代码重用在js中的一个重要体现。

这两货是函数自带的方法。

函数,本质上是一堆打包在一块的代码语句,能实现某种功用。

js中的函数,又是对象。

啥是对象呢?

譬如,我从狗东买了包核桃,店家贴心地随着了一个夹核桃的钳子。

核桃既是要处理的数据,处理核桃的目的是最终能吃到里面的肉。

钳子,则是处理数据的工具,(方法),每调用钳子一次,就可夹碎一至多个核桃,不等。

似乎有点扯远了,,,

js的作者,先天性地给函数额外赠送了2个方法:call apply

它们都接受两个参数,上下文和参数数组。

上下文,英文为 context,这可是个好词,值得咀嚼再三。

它,就是 powershell实战一书作者据说的场景,英文为 scenario。

给call/apply传递任何上下文,则可把函数召唤到此场景中运用。

仿佛,你买了台空调,此时,你的上下文,或者说场景,就是你的家

空调安装师傅,则是函数

发送你家地址上门时间给师傅,则如果传递上下文给师傅

师傅登门,安装好空调。走人。

-----------------------------------------------------------------

忽然间明白为什么古代的法师举行仪式画符完毕,总要喊上一嗓子:太上老君,急急如律令。

林正英在捉妖前,也总要穿上正装口念符咒。

圣斗士星矢变身前也总要bilibala一堆。

昨晚看开门大吉,某服装设计师被爆料说设计前总要正襟危坐,不然没灵感。

so,写js代码前,是不是也应该要念上啥咒语呢?

“燃烧吧,火鸟” 这是我想及此时脑子里蹦出的第一个词语

----------------------------------------------------------------------------

有人说,天下文章一大抄。

这话用到编程的世界,叫代码重用。

c++中,类是代码重用的一大重要体现。

js6之前没有类

有了代码重用,我们也就没必要重复造轮子了。

----------------------------------------------------------------------------

我又想到了函数绑定和函数柯里化

实现中,slice函数被多次召唤。

 

  

 

js兵器谱之魔法召唤师:call / apply