我正在编写 php 框架,它提取 Javascript 块以异步合并、缩小和执行它们。
所以我喜欢延迟 Javascript 代码的执行,为此我将 javascript 包装在
MyLib.then(function(){
//orignial code from the templates....
}
这很好用,除非包装的代码需要创建全局变量(我不是包装代码的作者,所以我不想修复该代码)相反我喜欢在全局执行上下文中运行该代码。
例如:
//excample code not within my controle
var global="Hello World";
会成为:
MyLib.then(function(){
//excample code not within my controle
var global="Hello World";
}
现在的解决方案是将javascript放入一个字符串然后
MyLib.then(function(){
$.globalEval("var global=\"Hello World\"";");
}
或在我的库中使用 globalEval 调用
MyLib.then("var global=\"Hello World\"";")
但我想坚持使用可读性更好的版本,这对于框架的用户来说也更容易调试。
MyLib.then(function(){
var global="Hello World";
}
并通过使用 callback.call(window) 或类似的东西来更改我的库中的执行上下文,这可能吗?