您的位置:首页 > 移动开发

JS this,call和apply以及回调函数

2015-04-26 16:34 671 查看
thisthis引用,引用的是一个对象,对象不同或函数调用方式的不同,this引用会根据代码的上下文语境自动改变引用对象的特性。引用规则1,在最外层代码中,this引用引用的是全局对象(windows)2,在函数内,this引用根据函数调用方式不同而不同1)在构造函数中,this引用的对象是构造函数生成的对象2)方法调用,this引用的是接受方对象3)appl和call调用,引用的对象由两个函数的参数指定4)其他方式调用,引用的是全局对象call和apply是Function对象的方法方法的定义call方法:
语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。apply方法:
语法:apply([thisObj[,argArray]])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明:
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。简单来说就是有如下不同func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])回调函数(callback)
function  a(callback){
alert('a');
callback();//或者是 callback(),  callback.apply(this)

}
function  b(){
alert('b');
}
//调用
a(b);

但是多数时候回调函数是有参数的所以应该向下面这样来定义

function  a(callback){
alert('a');
callback.call(this,'d');//或者是 callback(),  callback.apply(this)

}
//调用

c(function(e){ alert(e); });


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: