知识小结-学员林颖聪

知识小结

  1. call()方法与applly()方法的区别和用法

    用法:这两个方法都可以用来调用一个对象的方法,以另一个对象替换当前的对象。也就是一个对象从另一个对象中继承本身没有的方法。当一个对象没有某一个方法,而另一个有,就可以借助call或apply来继承这个方法。

    区别:这两个方法的第一个参数都是要继承方法的对象本身。call()剩余的参数都是传递给要调用的函数的值,而apply()只有两个参数,第二个是数组,这个数组就是要调用的函数的参数。

  2. 回调函数

    回调函数是一个被作为参数传递给另一个函数的函数,回调函数在这个函数中被调用。回调函数不会马上执行,它会在包含它的函数中的某个特定时间点被调用(回调)。举个例子,在jQuery中的点击方法,$("....").click(function(){....})这是回调函数典型的用法。

    使用命名或匿名函数作为回调,前面的例子就是一个匿名函数作为回调函数。而命名的函数作为回调函数时,是将回调函数的函数名作为参数传递给了另一个函数。

    function aaa(i){ ​ var j = 10; ​ alert(i*j); } function bbb(m,callback){ ​ callback(m); } bbb(2,aaa);

    结果弹出20;当调用bbb函数时,将aaa作为参数传递给了bbb,同时,m作为形参传递给了aaa,所以结果是20。

    当要作为回调函数的方法是一个对象内的方法时,要用对象 . 方法的形式来传递回调函数。例如:

    var obj = { ​ name : "mc", ​ aaa : function(i){ ​ alert(this.name + i); ​ } } obj.aaa("lin24");//弹出mclin24(此时的this指向obj) function bbb(m,callback){ ​ callback(m); } bbb("lin24",obj.aaa);(弹出lin24)

    但是,此时回调函数中的this并没有指向obj对象,反而是指向了window。这个时候可以用call或者apply方法保存原来方法this的指向。

    var obj = { ​ name : "mc", ​ aaa : function(i){ ​ alert(this.name + i); } } function bbb(m,callback,callbackobj){//这里的callbackobj是当前回调函数的this的指向对象。 ​ callback.call(callbackobj,m); } bbb("lin24",obj.aaa,obj);//弹mclin24,

你可能感兴趣的:(知识小结-学员林颖聪)