- 主题:请教一个javascript的问题
定义了一个类foo,然后引用了一个第三方类SOAPClient,这个类里面的方法都是类方法。
function foo(){}
foo.prototype.run = function(){
SOAPClient.invoke(params,this.soapCallback); //调用类方法,第二个参数是回调函数。
};
foo.prototype.run2 = function(){...};
foo.prototype.soapCallback = function(){
//这里我想调用run2,但是这时候上下文关系变成了SOAPClient,找不到foo的实例了,因此无法调用run2
请问在这里我如何才能把foo的实例传进来呢? 用全局变量是一种思路,自己修改第三方库把foo的实例传进去是一种思路,还有别的思路么?
}
--
修改:Kiessling FROM 222.130.132.*
FROM 222.130.132.*
是在soapCallback里调run2,这里this已经不是原来的了,因为invoke里面有个异步和服务器通信,callback是通信回来时调的
不过今天我想了一下,SOAPClient不是一个现成的全局变量么,我直接
在run里写了SOAPClient.extradata=this,就行了...
【 在 Eliot (好警察) 的大作中提到: 】
: jquery: $.proxy(this.run2,this)
: 或者:(function(o){
: return function(){
: ...................
--
FROM 222.130.132.*
嗯。。proxy要执行的是callback,不是run2
谢谢指导
【 在 Eliot (好警察) 的大作中提到: 】
: proxy后传递的函数里,把原来的this作为局部变量保存了。回调里调用是没有问题的。
: 你这样也可以。但你得保证一次回调返回期间不会有其他调用发生
--
修改:Kiessling FROM 222.130.132.*
FROM 222.130.132.*
嗯,明白了,谢谢
【 在 shaolin (漫漫当爹路) 的大作中提到: 】
: foo.prototype.xxx = function(){
: var that = this;
: ..... funciton(){
: ...................
--
FROM 222.130.132.*