任何天才能告诉我这个小代码是怎么回事?从JavaScript忍者的秘密

前端之家收集整理的这篇文章主要介绍了任何天才能告诉我这个小代码是怎么回事?从JavaScript忍者的秘密前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我几乎没有启动 JavaScript,我想知道有没有任何天才可以帮助我逐行了解?
1:  Function.prototype.bind = function(){
2:   var fn = this,3:      args = Array.prototype.slice.call(arguments),4:      object = args.shift();
5:   return function(){
6:   return fn.apply(object,7:      args.concat(Array.prototype.slice.call(arguments)));
8:  };
9: };

我只是初学者,但是如果你能教我,那么你真的很棒.我知道原型,调用,转移,​​应用一些,以便您可以跳过初学者部分(虽然我认为你不应该那么其他刚刚进入JS可能会学习如何).

注意:我知道有一个“类似的代码”,问一个类似的问题here,但我问逐行解释,他们不是(不重复)(也可以跳过第8行和第9行):)

解决方法

这是在EcmaScript 3中的一个部分实现,它是 partial application的EcmaScript 5 bind方法
myObject.method.bind(myObject,1,2)(3,4)

相当于

myObject.method(1,2,3,4)

但它也更方便,因为你可以做

var m = myObject.method.bind(myObject,2);
m(3,4);
m(5,6);

代替

myObject.method(1,4);
myObject.method(1,5,6);

Nit:这两个并不完全相同,因为如果第一次调用myObject.method,那么this.method = somethingElse;那么绑定的方法仍然会调用原来的方法.

打破它:

06004

向内置函数类型添加一个方法.

06005

存储它应该是正常使用中的函数,以便它可以在封闭中使用.

06006

创建一个包含要绑定的参数的数组.

06007

从args中删除第一个参数并将其存储在对象中.这将被用作fn的值,稍后应用.

06008

返回一个作为部分应用方法函数.调用这个功能

06009

将.bind左边的函数调用传递第一个参数来绑定.
apply是一种特殊的函数反映方法,它允许使用类似于python中的* args或** kwargs的参数数组来调用函数,或者在Java中调用.

060010

作为参数传递给fn,bind的参数后跟参数到闭包.

猜你在找的JavaScript相关文章