内JS文件,我只是想有一个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!
我知道,这可能可以使用eval()
或通过创建具有字符串new Function
可以实现,但我希望有一个更好的解决方案。
Caja可能值得一看:https://code.google.com/p/google-caja/ – ide 2011-02-15 02:53:22
+1有趣的问题,我说用eval去吧。是的,如果误用了,eval可能是危险的,但是如果它完成了工作并且把它放在了良好的位置...... – Zevan 2011-02-15 03:52:03