Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Underline.js如何为函数创建别名?_Javascript_Arrays_Underscore.js - Fatal编程技术网

Javascript Underline.js如何为函数创建别名?

Javascript Underline.js如何为函数创建别名?,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,例如,。每个都有一个别名。.forEach 我可以调用[1,2,3]。forEach(alter),但当我调用[1,2,3]时,它会显示每个(警报) TypeError:[1,2,3]。每个都不是函数 我在源代码中没有找到forEach的定义,那么下划线.js是如何做到这一点的呢?就这一点而言,规则与.forEach或.each不一样。标准的[].forEach是一个本机函数,自ES5以来,它是数组API的一部分。(它位于阵列原型上) 在..forEach的情况下,它实际上不使用[].forEa

例如,
。每个
都有一个别名
。.forEach

我可以调用
[1,2,3]。forEach(alter)
,但当我调用
[1,2,3]时,它会显示每个(警报)

TypeError:[1,2,3]。每个都不是函数

我在源代码中没有找到
forEach
的定义,那么下划线.js是如何做到这一点的呢?

就这一点而言,规则与
.forEach
.each
不一样。标准的
[].forEach
是一个本机函数,自ES5以来,它是
数组
API的一部分。(它位于
阵列
原型上)

..forEach
的情况下,它实际上不使用
[].forEach
方法使其向后兼容(ES5之前),因此它只使用
for
循环

对于别名,下划线通过将多个变量指向同一对象来创建别名

您可以在注释的源代码中清楚地看到这一切:

// alias _.each and _.forEach to point to the same function
_.each = _.forEach = function(obj, iteratee, context) {
    // ...
    if (isArrayLike(obj)) {
      // use a for loop to perform the iteration
      for (i = 0, length = obj.length; i < length; i++) {
        iteratee(obj[i], i, obj);
      }
    } else {
    // ...
//alias u0.each和0.forEach指向同一函数
_.each=uu.forEach=函数(对象、迭代对象、上下文){
// ...
if(类isArrayLike(obj)){
//使用for循环执行迭代
对于(i=0,长度=obj.length;i
下面是下划线的一个简单示例:

var{};//创建我们的虚拟下划线对象
_.each=\.forEach=函数(arr,callback){//别名\.each和\.forEach循环并执行回调
对于(变量i=0,l=arr.length;i});
下划线不扩展
数组
原型。这些是不同的函数。