比如我有这样的一个方法
var callback;//用来回调
function viewChatRoom(objectPK,fileid,roomPK,chatRoomID){
      XXX();
      XXX();//实现某几个方法之后
      callback = viewChatRoom;
}function xxx(){
     callback();//在某一个方法有这样一个回调
}
可是回调完之后,viewChatRoom中的参数由之前的有值变成了undefined了,请问能怎么样去解决怎么样去用有参数的回调方法?

解决方案 »

  1.   

    举个例子吧:
    <script language="javascript" type="text/javascript">
    function A(a,callback){
      var b=callback;
      alert(a+b);
    }
    function B(c){
    return (-c);
    }
    </script>
    <input type="button" name="Submit" value="Submit" onclick="A(4,B(3));">
      

  2.   


    <script>
    function callback(x) {
    alert(x);
    }function bind(f, args, scope) {
    scope = scope || window;
    return function () { return f.apply(scope, args); }
    }var callbackBindA = bind(callback, ['A'], null);
    callbackBindA();
    </script> 
    通过Apply方法和闭包可以实现参数的绑定
      

  3.   


    三楼朋友的代码可以做如下改进:function callback(a, b) {
        alert('Outer Argument: ' + a + ', Inner Args: ' +  b);
    }function bind(fn, context) {
        var slice = Array.prototype.slice,
            outerArgs = slice.call(arguments, 2); 
        return function () {
            var args = slice.call(arguments).concat(outerArgs);
            return fn.apply(context, args); 
        };
    }var callbackBindA = bind(callback, null, 'A');
    callbackBindA('B');