比如我有这样的一个方法
var callback;//用来回调
function viewChatRoom(objectPK,fileid,roomPK,chatRoomID){
XXX();
XXX();//实现某几个方法之后
callback = viewChatRoom;
}function xxx(){
callback();//在某一个方法有这样一个回调
}
可是回调完之后,viewChatRoom中的参数由之前的有值变成了undefined了,请问能怎么样去解决怎么样去用有参数的回调方法?
var callback;//用来回调
function viewChatRoom(objectPK,fileid,roomPK,chatRoomID){
XXX();
XXX();//实现某几个方法之后
callback = viewChatRoom;
}function xxx(){
callback();//在某一个方法有这样一个回调
}
可是回调完之后,viewChatRoom中的参数由之前的有值变成了undefined了,请问能怎么样去解决怎么样去用有参数的回调方法?
<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));">
<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方法和闭包可以实现参数的绑定
三楼朋友的代码可以做如下改进: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');