研究一下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中创建对象的方法如下:
一、创建简单对象:
最简单的创建对象的方法就是用一个新的Object,然后向其中添加内容:
现在调用myObject.say(),将弹出’gao’的警告框。
var myObject = new Object();
myObject.name = ‘gao’;
myObject.say = function(){
alert ......
JavaScript中的"=="和"===" (转)
首先,== equality 等同,=== identity 恒等(严格相等)。
==, 两边值类型不同的时候,要先进行类型转换,再比较。
===,不做类型转换,类型不同的一定不等。
下面分别说明:
先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:
1、如果类型不同,就[不相等]
2 ......
(一)开始
从WIN95起,WIN系统的一些基本功能被封装在符合通用对象模式COM(Common Object Mode)标准的OLE组件中,在网页上可通过JavaScript语言调用shell实现一些系统功能。用JavaScript调用shell是通过ActiveXObject来实现的,见下:
......
一、功能实现核心:FileSystemObject 对象
要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。
二、FileSystemObject编程
使用FileSystemObject 对象进行编程很简单,一般要经过如下的步骤: 创建FileSystemObject对象、应用相关方法、访问对象相关属性 。 ......
1 一起困惑始于变量的作用域
请先看下面的代码:
示例1:
var message = " this is a very simple function ";
function simpleFunc(){
alert(message);
}
背后的道理大家都懂(如果不懂的可以先别往 ......