JavaScript-将数据传递给匿名函数
JavaScript - pass data to anonymous function
我有一个典型的用例(可能对我的用例太具体了)。
我有一个类似的片段:
var x=0,y=10;
var data = {"callback" : function(x,y) {console.log(x,y)}}
在代码流中,im异步调用上面的匿名函数
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模式
我不知道为什么不能设置data.x
和data.y
,然后像其他答案提到的那样读取这些值。如果这不令人满意,那么当您获得x
和y
时,也许您可以构建一个闭包(一个预设了x
和y
的函数),如下所示:
function setCallback(x,y){
return (function(){console.log(x,y);});
}
data.callback=setCallback(0,10);
data.callback
与您的函数相同,只是x
和y
预设为您提供的示例值。
执行data.callback();
,则在控制台中生成0 10
。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 如何将firebase数据传递到函数中
- 为什么不'我们在javascript中使用函数参数的数据类型
- Meteor Router数据函数被调用两次
- onChange 函数更改表中显示的数据
- 如何降低此函数的复杂性,该函数根据数据类型进行回调
- 函数jquery.html()不提供数据属性集值
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- 是否保证传递给 always 函数的回调将在函数(数据)回调完成其工作后调用
- get 函数数据报告空信息
- JavaScript函数数据处理
- 我想将函数数据发送到使用 javascript 中的按钮设计的边框中
- fnGetPosition不是一个函数-数据表
- 函数外的Javascript函数数据
- 使用函数数据动态加载onclick函数
- 如何将函数索引和函数数据统一为一个新函数
- 使用美元.Post方法将函数(数据)值返回给变量
- 没有函数数据绑定不能工作
- Jquery.ajax,成功:函数(数据)没有返回一个普通对象
- 未捕获的类型错误:未定义不是函数-数据表