其中Ajax.use
,回调函数内部的this指的是回调函数。
然而,在回调定义之外this
将引用 Ajax 的特定实例。
这就是我使用this
in Ajax.invoke
->this.use()
从另一个成员方法调用成员方法的方式。
我还需要在回调函数内部调用一个成员方法。
我猜到并输入
this.invoke()
但我不认为这是指回调函数中的正确对象。我认为它指的是回调函数对象。
/**
* Ajax
*/
var Ajax = ( function ()
{
var Ajax = function (element)
{
this.object = this.create();
};
Ajax.prototype.create = function()
{
var request;
try
{
request = new window.XMLHttpRequest();
}
catch( error )
{
try
{
request = new window.ActiveXObject( "Msxml2.XMLHTTP" );
}
catch( error )
{
try
{
request = new window.ActiveXObject( "Microsoft.XMLHTTP" );
}
catch( error )
{
request = false;
}
}
}
// alert("Object Created Successfully");
return request;
};
Ajax.prototype.use = function( param, ajax_func )
{
alert("Ajax.prototype.use Called");
this.object.open( "POST", Global.GATEWAY, true );
this.object.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
this.object.setRequestHeader( "Content-length", param.length );
this.object.setRequestHeader( "Connection", "close" );
this.object.onreadystatechange = function()
{
if( this.readyState === 4 )
{
if( this.status === 200 )
{
ajax_func( this.responseText );
return true;
}
else
{
this.invoke( param, ajax_func );
return false;
}
}
};
this.object.send( param );
return true;
};
Ajax.prototype.invoke = function( param, ajax_func )
{
var state = false,
count = 1;
while( state === false && count <= 5 )
{
if( count !== 1 )
{
alert( 'Ajax Object Use Failed | Try Again ');
}
state = this.use( param, ajax_func );
count++;
}
return state;
};
return Ajax;
} () );