內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