假设我有一个具有不同选项的数组:

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);


您可以制定一种特定的方法来检索项目列表。

10-05 20:54
查看更多