call.apply连用可以怎么样理解?
泻药就是最原始的 call (函数) 的 call (调用) 啊如:function foo(a) { this.x = a; console.log(this, a, this.x);}Function.prototype.call.apply(foo , );// output// Object {x: 1} 1 1Function.prototype.call.call(foo , {}, 1);// output// Object {x: 1} 1 1反正 call 和 applay 的第一个参数必须是规范定的 IsCallable ,也就是实现了 ] 的 Object。ps:这个不看规范不用管啦,其实第一个参数必须是 function个人认为,这么做估计是怕 call 啥被同名成员属性盖掉导致出错什么的吧。因为 function 就是个可以 ] 的 Object 。保不齐有人这么玩吧……function foo(a) { this.x = a; console.log(this, a, this.x);}foo.call = function(){ throw \u0026#39;err!\u0026#39;};foo.call({}, 1);// output// 异常 err!通常说 Function.prototype.call 要是给改掉那就可以胖揍肇事者了 ……所以呢,Function.prototype.call 就是原始 call 函数的“保险”调用然而Array.prototype.slice.call.apply 也是类似,就是没走到 Function.prototype.call 这么深的根上……也可能会被指定性的加入同名成员属性盖掉:Array.prototype.slice.call = function(){ throw \u0026#39;err!\u0026#39;};Array.prototype.slice.call.apply(foo, );// output// 异常 err!虽说这么干的人也可以拖过来弹JJ ……
■网友
遇到 call 或 apply,自动把前面的打包看成一个值。Function.prototype.call.apply = \u0026gt; (Function.prototype.call).apply或者先缓存到一个变量中var call = Function.prototype.callcall.apply(...)这里还有个反柯里化玩法function unCurrying(fn) {\t\treturn function() {\t\t\treturn Function.prototype.call.apply(fn, arguments)\t\t}\t}返回一个新函数,旧函数的this值被抽出来,作为新函数的首个参数。
推荐阅读
- 用泡沫箱来养多肉老桩?只要我们把细节做好,同样可以养出状态来
- ■养宠物真可以缓解孤独吗?一起来听听“铲屎官”的心声吧!
- 用EagleGet下载时总提示无效URL地址,无法下载,而用迅雷、QQ旋风则可以,咋回事~
- 银行的数据中心可以跳槽去互联网公司吗
- 银行高管的薪酬结构图表最新的,请问在哪里可以收集
- 医院|感染艾滋病毒初期有哪些征兆?可以自行检查吗?共用马桶会传染吗
- 电动车第一线|电动车配多大的电池,可以跑100公里以上?师傅告诉你真实答案!
- 有啥方法,网站,项目可以自己练习计算广告学
- 学图像处理有哪些不错的书推荐
- 宝马7系|可以说,这款数字化高尔夫,让人看到了未来大众所有车型的样子
