gpt4 book ai didi

module - 如何在NodeJS中通过字符串 "foo"访问函数 "foo"?

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:50 24 4
gpt4 key购买 nike

即浏览器的“窗口”对象相当于什么,附加了顶级函数?

以下代码在 REPL 中成功:

var assert = require('assert');
function foo() { };
assert.ok(foo == this["foo"]);

但是在脚本(或模块)中它会失败 - 在这两种情况下“this”都是一个空对象。

我想知道这一点,以便我可以轻松导出模块 namespace 中可见的所有函数 - 我希望能够执行以下操作:

function foo() { };
function bar() { };

["foo", "bar"].forEach(function (k) {
exports[k] = ???;
});

(eval(k) 适用于 ???,但是,呃。)

最佳答案

马特·鲍尔的回答非常好:

var foo = exports.foo = function() {
//...
};.

// Or, you could create your own object containing
// the functions you'll later export:

var fns = {};

fns.foo = function(){...};

// ...

fns.forEach(/*...*/);

// – Matt Ball Feb 27 at 14:42

或者,

exports.foo = {
method1: function() { /*...*/ }
, method2: function() { /*...*/ }
, method3: function() { /*...*/ }
/*...*/
}

一些展示最佳实践的模块: https://github.com/cloudhead/journey/blob/master/lib/journey.js对于浏览器兼容性:https://github.com/caolan/async/blob/master/lib/async.js https://github.com/mikeal/request/blob/master/main.js

/fyi #node.js IRC 欢迎您:http://bit.ly/nodeIRC

关于module - 如何在NodeJS中通过字符串 "foo"访问函数 "foo"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com