javascript中的回调函数中变量作用域

1,在callObjMethod方法中,我用了两种方式回调“method"方法: 
第一种方式:method("通过默认上下文回调"); 
没有指定上下文,我们发现回调函数内部访问context的值是全局变量的值, 
这说明,执行该方法的默认上下文是全局上下文。 
第二种方式:method.call(obj,"指定显式对象上下文回调"); 
指定obj为method执行的上下文,就能够访问到对象内部的context

 

2,在javascript中,在function内部创建一个function的时候,会自动创建一个closure, 

而这个closure就能记住对应的function创建时的上下文

 

3,在javascript中,this也可以代表当前对象,但不能直接用在匿名function中用,比如: 

JScript code var testObj={ context:"初始", callback:function (str){//回调函数 alert("callback:我所处的上下文中,context="+this.context+",我被回调的方式:"+str); }, caller:function(){ callWithClosure(function(param){this.callback(param);}); } };//创建一个对象,作为测试回调函数的上下文 
以上代码中的this指的不是testObj,而是全局上下文, 需要在closure外写一个临时变量来代表this,完整的代码如下:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章