访问在另一个文件中定义的局部变量
Access local variables defined inside another file
interface.js
((function(){
var Person=function(){
}
.......
})();
实施.js
((function(){
//access local variables(Person) in interface.js
Person.prototype.eat=function(){
}
})();
加载它们:
function getScript(src) {
document.write('<' + 'script src="' + src + '"' + ' type="text/javascript"><' + '/script>');
}
getScript("interface.js");
getScript("implemention.js");
如代码所示,我想从implemention.js
访问interface.js
中定义的局部变量"Person",无法直接访问,因此我尝试使用这样的闭包:
界面.js
((function(){
...
var Person=function(){
}
window._load_implement=(function(){
return function(impl){
impl && impl();
delete window._load_implement;
}
})();
})();
实施.js
((function(){
var imp=function(){
Person.prototype.eat=....
}
window._load_implement(imp);
})();
IMO,当imp
方法运行时,应关闭Peson
和其他变量,这意味着应该访问,但它不起作用。
有什么问题吗?
我发布了这个问题并试图得到答案,因为我看到了一些类似的用法,以谷歌地图为例,main.js
将被加载,其中所有与地图相关的对象(如Map
Marker
和一些 util 函数)都在那里定义,然后其他谷歌地图模块,如 InfoWindow
将在需要时加载, 但是infowindow.js
可以main.js
中定义的所有实用程序功能。
如果要使用立即调用的函数表达式并将对象添加到全局命名空间,则可以将它们显式添加到窗口对象或正确作用域中的另一个非全局对象,而不是将对象定义为函数内的局部变量:
(function(){
window.Person = function(){
}
.......
})();
或
var Person = (function(){
})();
后者称为模块模式。
相关文章:
- 定义 JavaScript 类的局部变量
- 我可以't克服这个错误“;未定义的局部变量或方法`f'"任何原因
- ERB/Coffee Rails 中图像网址的未定义局部变量或方法“image”
- 为什么我的 JavaScript 提升的局部变量返回未定义,但提升的全局变量返回空白
- 在 JavaScript 中使用对象定义局部变量
- 访问在另一个文件中定义的局部变量
- 为什么全局变量无法访问,即使稍后在代码中定义了局部变量
- 在JavaScript中有没有一种方法可以获得当前定义的所有局部变量的列表
- 用冲突的局部变量重新定义全局变量
- 如何将匿名函数中定义的局部变量公开到全局空间
- 在DustJS中将变量添加到上下文中,或定义局部变量
- 局部变量是未定义的,尽管我在javascript中为它分配了一个值
- 将default设置为模型中的局部变量将导致未定义
- 当声明同名的局部变量时,函数变为未定义
- 局部变量在javascript的回调函数中变得未定义
- 未定义的局部变量或方法`fritkot'对于#<FritkotsController错误消息
- Jquery更新,未定义局部变量
- Js:未定义的局部变量或方法current_user'
- 在某个给定范围内定义局部变量
- 错误:未定义局部变量或方法'e'"RegistrationsController内部