我有一个典型的用例(可能对我的用例来说太具体了)。
我有这样的一块:
var x=0,y=10;
var data = {"callback" : function(x,y) {console.log(x,y)}}
在代码流中的某些地方,我会在匿名函数上方异步调用
call(data.callback);
我的问题是在第二段代码中,我没有x,y的数据在调用函数时传递。那么,有什么方法可以在声明函数本身时附加数据(x,y变量数据)?
编辑1:
@Kursad Gulseven,因为简单起见,我展示了这样的内容。
但是,在实际情况下,“数据”,“回调”是动态名称。所以,我不能简单地使用data.callback。
虽然我这样做了,但是我没有变量(带有数据),因此我试图在其中调用匿名函数。因为再次从另一个异步函数调用匿名函数是这里的问题。
希望它清楚并且有意义。
在可用的情况下,将x和y注入数据对象。
data = {
x: null,
y: null,
"callback": function(x, y) {
x = x || this.x;
y = y || this.y;
console.log(x, y);
}
}
data.x = 0
data.y = 10;
// I'm assuming here you have a way to know how the "data" object is called
// and how to access it. (the obejct it's attached to)
// For simplicity, I used a global
var dataName = 'data',
callbackName = 'callback';
//using a wrapper function without parameters, like in your example
// call(data.callback);
//calling without parameters
window['data']['callback']();
// calling with parameters
window[dataName][callbackName](15, 25);
注意:如果您通过某种异步调用获取x和y,则可能要检查promise模式
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句