var URL = paramObject.URL;
var XHRTool = new XHRToolKit(URL, function (result) { //result之前没有任何定义赋值。
onReceiveData(result);
});var XHRToolKit = function (pURL, pSendResultFunc) {
var URL = pURL;
var sendResultFunc = pSendResultFunc; var receiveXHRResponse = function(){
if (XHRObj.status == 200) {
alert("Good XHR response");
sendResultFunc(true);
}
else {
alert("Bad XHR response.");
sendResultFunc(false);
}
}
}var onReceiveData = function (bSuccess) {
if (bSuccess) {
alert("onReceiveData("+bSuccess+")");
}
else
alert("null");
}我JAVA用得比较多,js这种写法有点不适应,XHRToolKit明明是一个类,URL是实参,有值,result之前没有定义,这的function是定义吗,还是什么,而且onReceiveData(result)不返回任何值,也未对result赋值。
我只有一种猜测了:先将 function (result) 作为实参进到类里进行调用,但即便这样,也不会直接调用receiveXHRResponse。。思路太乱了,还望高手指点。
var XHRTool = new XHRToolKit(URL, function (result) { //result之前没有任何定义赋值。
onReceiveData(result);
});var XHRToolKit = function (pURL, pSendResultFunc) {
var URL = pURL;
var sendResultFunc = pSendResultFunc; var receiveXHRResponse = function(){
if (XHRObj.status == 200) {
alert("Good XHR response");
sendResultFunc(true);
}
else {
alert("Bad XHR response.");
sendResultFunc(false);
}
}
}var onReceiveData = function (bSuccess) {
if (bSuccess) {
alert("onReceiveData("+bSuccess+")");
}
else
alert("null");
}我JAVA用得比较多,js这种写法有点不适应,XHRToolKit明明是一个类,URL是实参,有值,result之前没有定义,这的function是定义吗,还是什么,而且onReceiveData(result)不返回任何值,也未对result赋值。
我只有一种猜测了:先将 function (result) 作为实参进到类里进行调用,但即便这样,也不会直接调用receiveXHRResponse。。思路太乱了,还望高手指点。
<SCRIPT LANGUAGE="JavaScript">
<!--
function obj(url,callback){
this.url=url;
this.exec=function(){
if(typeof(callback)=="function"){
callback(url,"第二个参数","第三个参数"); //对象中的回调函数设置3个参数
}
}
} var a=new obj("http://www.google.com",function(url,p2,p3){
alert("p1:"+url+" p2:"+p2+" p3:"+p3);
}); a.exec(); </SCRIPT>
onReceiveData(result);
}); 第2个参数是个function 只是定义一个函数 还没有执行 既然没有执行 result没直又怎么样var XHRToolKit = function (pURL, pSendResultFunc) {
.............
var sendResultFunc = pSendResultFunc;
.............
}
这里 变量就引用了 外面传来的function 也就是
function (result) {onReceiveData(result); }然后下面有
sendResultFunc(true); and sendResultFunc(false);
true 和 false 不就相当于result的直吗
//XHRToolKit.jsvar XHRToolKit = function (pURL, pSendResultFunc) {
var URL = pURL;
var sendResultFunc = pSendResultFunc;
var receiveXHRResponse = function(){
if (XHRObj.status == 200) {
alert("Good XHR response");
sendResultFunc(true);
}
else {
alert("Bad XHR response.");
sendResultFunc(false);
}
}
}//CategoryMgr.jsvar CategoryMgr = function (paramObject) {
var XHRTool = new XHRToolKit(URL, function (result) {
onReceiveData(result);
});var onReceiveData = function (bSuccess) {
if (bSuccess) {
alert("onReceiveData("+bSuccess+")");
}
else
alert("null");
} }
js里面有闭包的
url不是全局变量,只是一个属性,当然上面的例子中应该改为this.url,这样更清楚
callback(this.url,"第二个参数","第三个参数");实际上这个过程就是一个回调的过程,包括回调函数的声明,传递,调用. 即把一个function当成一个参数传递给方法,让这个方法去执行,