我想用javascript动态创建一些函数。所有函数都做了特殊的工作,但使用了不同的数据(例如,console.log("data")
)。
config = ['data1', 'data2', 'data3'];
returned = {};
for(var i in config){
returned[config[i]] = function(){console.log(config[i])};
}
我上面的代码,所有函数必须记录一个数据,但不同的数据。我希望当我致电returned["data1"]()
时,它会记录data1
,但是当我致电returned["data1"]()
时,它会记录data3
。
有可能吗?我该怎么办?
答案 0 :(得分:2)
这可能就是你要找的东西。
var returned = {};
['data1', 'data2', 'data3'].forEach(function(element) {
returned[element] = function() { console.log(element); };
});
答案 1 :(得分:2)
config = ['data1', 'data2', 'data3'];
returned = {};
config.forEach(function(data){
returned[data] = function(){
console.log(data);
};
});
修改强>
您还可以提取内部函数,以便提高内存效率:
config = ['data1', 'data2', 'data3'];
returned = {};
function doSpecialWork(data){
console.log(data);
};
config.forEach(function(data){
returned[data] = doSpecialWork(data);
});
修改2
你也可能变得愚蠢,但称自己为功能:
config = ['data1', 'data2', 'data3'];
function doSpecialWork(data){
console.log(data);
};
returned = config.reduce(function(returned, data){
returned[data] = doSpecialWork(data);
return returned;
}, {});