Javascript 访问在另一个文件中定义的局部变量
interface.jsJavascript 访问在另一个文件中定义的局部变量,javascript,Javascript,interface.js ((function(){ var Person=function(){ } ....... })(); ((function(){ ... var Person=function(){ } window._load_implement=(function(){ return function(impl){ impl && impl();
((function(){
var Person=function(){
}
.......
})();
((function(){
...
var Person=function(){
}
window._load_implement=(function(){
return function(impl){
impl && impl();
delete window._load_implement;
}
})();
})();
implementation.js
((function(){
//access local variables(Person) in interface.js
Person.prototype.eat=function(){
}
})();
((function(){
var imp=function(){
Person.prototype.eat=....
}
window._load_implement(imp);
})();
加载它们:
function getScript(src) {
document.write('<' + 'script src="' + src + '"' + ' type="text/javascript"><' + '/script>');
}
getScript("interface.js");
getScript("implemention.js");
implementation.js
((function(){
//access local variables(Person) in interface.js
Person.prototype.eat=function(){
}
})();
((function(){
var imp=function(){
Person.prototype.eat=....
}
window._load_implement(imp);
})();
依我看,当imp
方法运行时,应该关闭Peson
和其他变量,这意味着应该访问它们,但它不起作用
有什么问题吗
我发布了这个问题并试图得到答案,因为我看到了一些类似的用法,比如谷歌地图,将被加载,所有与地图相关的对象,如
map
Marker
和一些util函数都在那里定义,然后在需要时加载其他谷歌地图模块,如,但是,如果要使用立即调用的函数表达式并将对象添加到全局名称空间,则infowindow.js
可以使用main.js
中定义的所有util函数,可以将它们显式添加到窗口对象或正确范围内的另一个非全局对象,而不是将对象定义为函数内的局部变量:
(function(){
window.Person = function(){
}
.......
})();
或
后者被称为。它们是在同一个文件中还是在不同的文件中并不重要。函数的本地变量不能在该函数之外访问。Javascript使用变量的词法范围。局部变量的作用域仅是在声明变量的函数体中定义的函数。它不包括作为参数传递给这些函数的函数。这是否意味着我的要求不可能实现?这是正确的。您可能应该研究OO编程,以提供一种使对象中的局部变量可访问的方法。