这道题什么意思?

为什么要先bind再apply



#前端工程师#
全部评论
在这里,bind方法对apply执行的方法再封装。
点赞 回复 分享
发布于 2019-02-09 15:09
补充: apply call bind区别1.call和apply的区别是,都会改变this指向并且立即执行。call和apply的第一个参数为this所指向的对象,call可以有第二个第三个第四个等等参数,apply第二个参数为一个数组。2.bind也是改变this指向,但是不立即执行,会返回一个闭包函数。apply底层模拟实现:Function.prototype.apply = function (context, arr) { var context = Object(context) || window; context.fn = this; var result; if (!arr) { result = context.fn(); } else { var args = []; for (var i = 0, len = arr.length; i < len; i++) { args.push('arr[' + i + ']'); } result = eval('context.fn(' + args + ')') } delete context.fn return result;}
点赞 回复 分享
发布于 2019-02-09 17:35
1.使用apply的原因 由于 new Date()的时候,传入的参数不能是一个数组,因此同上面几个例子一样,主要目的就是通过apply方法变通一下,使得传入的参数由数组解构为变量(可以看下apply的底层实现,如果记得没错的话是在eval执行的过程中会把数组拼接分解为字符串变量)。2.执行bind是对apply的结果进行绑定,形成一个闭包。最后在new的过程中,生成一个Date对象。总结:看似复杂,其实也就是在对一个数组参数在面对一个方法对数组参数不友好时进行合法化。因此es6代码就直接拓展运算符进行解构,使得参数ojbk。个人理解,如有不对,还请各位大腿告之一下
点赞 回复 分享
发布于 2019-02-09 17:30
bind表示看不懂,倒是用过apply。不好意思,我不是做前端的
点赞 回复 分享
发布于 2019-02-08 19:06

相关推荐

昨天 10:23
已编辑
湖南师范大学 计调
太久没更新,前几天看到一条评论,说“牛客就是当年那群做题区毕业了开始找工作还收不住那股味”的群体。字里行间透着居高临下的评判,不是,他该不会以为自己很幽默?很犀利吧?作为在牛客混了不算短日子的用户,我感到的不只是被冒犯,更是一种深刻的悲哀——这种以“松弛感”为名,对另一种生存策略的轻蔑,颇有一种自己考不上大学早早出来混社会,嘲笑考上大学的人是书呆子,然后大言不惭地说:死读书有什么用,人脉和资源才是硬道理。我不知道说这个话的人,手头究竟握着多少真正管用的人脉与资源,也不知道他这么傲慢地说出“那股味”的时候,是站在哪一个巨人的肩膀上,才能如此“松弛从容”地俯视众生,还能品评出别人身上“没收住”的余...
淬月星辉:这种评论把正常的努力扭曲成卷😂,说白了就是自己不努力,看着身边努力的人一个个都事业有成了,自己的心里开始不平衡了,就发这种酸言酸语。牛客可以说是我用过那么多平台里社区氛围最好的论坛了,用了大半年了,基本上没见过有人吵架的,都是在互帮互助提建议,帮忙看简历的,帮忙选offer的,帮忙指点学习路线的,分享工作经验和趣事的,我觉得这才是互联网该有的样子。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务