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函数被多次召唤。