在私有范围内包含JS文件

ken*_*ken 12 javascript

我只是希望能够包含一个JS文件,但不能在全局范围内进行评估.

我已经浏览了labjs和requirejs,虽然他们可以做1000件其他的事情似乎也没有能够解决这个问题.

我知道我可以包含这样的代码foo.js,它需要一个特定的上下文,并且可以在其中行动,但这不是我正在寻找的(必须改变源文件).相反,我希望源JS文件保留为任何其他JS文件,不需要任何类型的元数据或通过包含文件本身中的代码解析运行时执行上下文; 在包含文件之外,没关系.

为清晰起见,一些简单的演示:

/*
 * Example 1 - apply to current context
 */
function x() {  
    include('foo.js'); // provides foo()
    foo(); // ok!
}
foo(); // not ok!


/*
 * Example 2 - apply to namespace context
 */
include.apply(ns, ['foo.js']); // provides foo()
ns.foo(); // ok!
foo(); // not ok!
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过使用eval()或通过创建new Function字符串来实现,但我希望有更好的解决方案.

ken*_*ken 1

要结束这个老问题,遗憾的是没有找到可接受的解决方案。一些很好的建议,但都违反了我的要求。我想以该语言当前的功能集来说这可能是不可能的。