假设我有一个具有不同选项的数组:
exports.options = [
["big_house", { width: 260 , length: 140 }],
["small_house", { width: 36 , length: 90 }]
...
];
如何为每个
option
动态创建导出功能? (例如,它们应如下所示):exports.big_house = function(extra_width, extra_length){
build(260, 140, extra_width, extra_length);
};
exports.small_house = function(extra_width, extra_length){
build(36, 90, extra_width, extra_length);
};
我的尝试始于:
this.options.forEach(function(option){..
,但是要使String
转换为接受两个参数的函数名称,我一直在失败。谢谢!
最佳答案
您可以为每个单独的键公开一个对象,并且该对象中的一项可以是一个函数:
exports.options = {
big_house: { width: 260, length: 140, build: function(extra_width, extra_length) {
return build(this.width, this.length, extra_width, extra_length);
}},
small_house: { width: 36, length: 90, build: function(extra_width, extra_length) {
return build(this.width, this.length, extra_width, extra_length);
}},
}
然后,当您使用它时,可以这样做:
var items = require('builder');
items.big_house.build(10, 20);
实际上,在实现中,您甚至可以使用一个通用函数:
function _build(extra_width, extra_length) {
return build(this.width, this.length, extra_width, extra_length);
}
exports.options = {
big_house: {width: 260, length: 140, build: _build},
small_house: {width: 36, length: 90, build: _build},
}
要获取选项列表,可以使用
Object.keys()
:var b = require('builder');
var items = Object.keys(b.options);
您可以制定一种特定的方法来检索项目列表。