易截截图软件、单文件、免安装、纯绿色、仅160KB

研究一下JavaScript的函数回调机制

研究一下JavaScript的函数回调机制
1、背景
Javascript中的回调函数,相信大家都不陌生,最明显的例子是做Ajax请求时,提供的回调函数,
实际上DOM节点的事件处理方法(onclick,ondblclick等)也是回调函数。
在使用DWR的时候,回调函数可以作为第一个或者最后一个参数出现,如:
function callBack(result){
}
myDwrService.doSomething(param1,param2,callBack);//DWR的推荐方式
//或者
myDwrService.doSomething(callBack,param1,param2);
2、问题描述
最近在使用Dojo+Dwr的时候,碰到一个问题:
如果回调函数是属于某个对象(记为obj1)的方法,等到DWR执行该回调函数的时候,
上下文却不是obj1。
表现的现象就是在回调函数中访问obj1的任何属性都是undefined。
版本:Dojo1.3.1和dwr2
3、模拟问题的代码
下面的测试代码可以模拟这个问题:
<html>
<head>
<script>   
    var context="全局";
    var testObj={       
        context:"初始",
        callback:function (str){//回调函数
            alert("callback:我所处的上下文中,context="+this.context+",我被回调的方式:"+str);
        }       
    };//创建一个对象,作为测试回调函数的上下文
    testObj.context="已设置";
   
    function testCall(){               
        callMethod(testObj.callback);
        callObjMethod(testObj,testObj.callback);       
    } 
    function callObjMethod(obj,method){       
        method.call(obj,"指定显式对象上下文回调");
    }
    functio


相关文档:

JavaScript中对象的创建

JavaScript中创建对象的方法如下:
一、创建简单对象:
最简单的创建对象的方法就是用一个新的Object,然后向其中添加内容:
 
现在调用myObject.say(),将弹出’gao’的警告框。
 
var myObject = new Object();
myObject.name = ‘gao’;
myObject.say = function(){
alert ......

[JavaScript] JavaScript中常见疑问整理

JavaScript中的"=="和"===" (转)
首先,== equality 等同,=== identity 恒等(严格相等)。
==, 两边值类型不同的时候,要先进行类型转换,再比较。
===,不做类型转换,类型不同的一定不等。
下面分别说明:
先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:
1、如果类型不同,就[不相等]
2 ......

利用JavaScript在网页上实现shell功能

(一)开始
         从WIN95起,WIN系统的一些基本功能被封装在符合通用对象模式COM(Common Object Mode)标准的OLE组件中,在网页上可通过JavaScript语言调用shell实现一些系统功能。用JavaScript调用shell是通过ActiveXObject来实现的,见下:
      ......

Javascript文件及文件夹操作

一、功能实现核心:FileSystemObject 对象 
    要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。
二、FileSystemObject编程 
使用FileSystemObject 对象进行编程很简单,一般要经过如下的步骤: 创建FileSystemObject对象、应用相关方法、访问对象相关属性 。 ......

JavaScript Closure(闭包) 那些事

1 一起困惑始于变量的作用域
请先看下面的代码:
示例1:
     var message = " this is a very simple function ";
     function simpleFunc(){
             alert(message);
     }
背后的道理大家都懂(如果不懂的可以先别往 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号