使用javascript / nodejs创建动态方法

时间:2013-10-25 17:14:05

标签: javascript node.js method-invocation

我正在尝试创建一个像这样的api的nodejs模块

**program.js**

var module = require('module');
var products = module('car', 'pc'); // convert string arguments to methods

// now use them 
products.car.find('BMW', function(err, results){
  // results
})

products.pc.find('HP', function(err, results){
  // results
})

>

**module.js**

function module(methods){
  // convert string arguments into methods attach to this function
  // and return
}

module.find = function(query){
  // return results
};

module.exports = module;

我知道这是可能的,因为module正在做同样的事情。 我试图研究这个来源,但是还有很多事情要做,所以无法确定它是如何做到的。

2 个答案:

答案 0 :(得分:2)

也许这样的事情?如果没有其他细节,有点难以回答:

function Collection(type) {
    this.type = type;
}

Collection.prototype = {
    constructor: Collection,
    find: function (item, callback) {
        //code to find
    }
};

function collectionFactory() {
    var collections = {},
        i = 0,
        len = arguments.length,
        type;

    for (; i < len; i++) {
        collections[type = arguments[i]] = new Collection(type);
    }

    return collections;

}

module.exports = collectionFactory;

答案 1 :(得分:0)

不确定你想做什么,但记住你可以使用[]符号表示对象的动态属性名称...

var MyModule = function(param1, param2) {
  this.funcTemplate = function() {
    console.log('Hi ');
  };

  this[param1] = this.funcTemplate;
  this[param2] = this.funcTemplate;
};

var dynamic = new myModule('what', 'ever');