www.ys3399.comcallback.call和callback 的区别

2016/12 01 14:12
此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于www.ys3399.com的点点滴滴

jQuery中each办法的完成运用call办法,call办法可以设置上下文,第一,在下例中数组each结果一样,为什么不直接调用呢?

     if likeArrayelements {
         for i = 0; i < elements.length; i++ {
               callbacki, elements[i];
           }
     }
if likeArrayelements {
        for i = 0; i < elements.length; i++ {
              if callback.callelements[i], i, elements[i] === false break;                 
        }
  }

Function.call

第一个题目:

经过call 可以改动this的指向。

var testCall = functionobj, callback{
    callback.callobj, 1;
}

testCall["一、改动this的指向", "二、函数外部可以经过this调用"], functionindex{
    //运用 call方法调用,可以直接经过this拜访 call 的第一个参数传入的东西。
    alertthis[index]; //二、函数外部可以经过this调用    
};

不运用 call方法调用,没有运用this。

var test = functionobj, callback{
    callbackobj, 1;
}

test["一、改动this的指向", "二、函数外部可以经过this调用"], functionindex{
    //不运用 call方法调用,没有运用this。
    alertthis[index]; //undefined
};

jQuery.each 应该便是运用 call 修正 的 this 指向;

$.each[1,2,3], function index, item {
    console.log{index:index,value:item,_this:this};
};

/*
  Object {index: 0, value: 1, _this: Number}
  Object {index: 1, value: 2, _this: Number}
  Object {index: 2, value: 3, _this: Number}
*/

没看 jQuery 源代码,用 callback.call 盗窟个,应该完成方法是一样的。

var each = functionarr, callback{
  for var index = 0 ; index < arr.length ; index++ {
    callback.callarr[index], index, arr[index];
  }
}

each[1,2,3], function index, item {
    console.log{index:index,value:item,_this:this};
};

/*
  Object {index: 0, value: 1, _this: Number}
  Object {index: 1, value: 2, _this: Number}
  Object {index: 2, value: 3, _this: Number}
*/

留意:this,假如没有 运用 call,在回调函数中是没法运用 this 的。

第二个题目:
为什么each 不用用 callback,由于你写错了,函数传参数必需运用 括号。

for key in elements {
                    // callback[key, elements[key]]//这里不克不及任务
                    /*
                        应该是 callbackkey, elements[key];
                    */
                    if callback.callelements[key], key, elements[key] === false {
                        break;
                    }
                }

(看完/读完)这篇文章有何感想! 来看看www.ys3399.com是怎么评论的吧!

--转载请注明: ys3399盈丰国际官网_www.ys3399.com_ys3399盈丰国际官网网址 » www.ys3399.comcallback.call和callback 的区别

发表评论

(必填)