如何在私有函数中引用局部变量?例如,在下一个代码中,在函数myDisplay中,如何获取show function object的对象myObject并获取id =' B'?
var charge = (function($){
var open = function(){
var myObj = {
id: 'A'
};
};
var show = function(){
var myObj = {
id: 'B'
};
myDisplay();
};
function myDisplay(){
//Here, how to refer to var myObj of show function object?
}
return {
open: open,
show: show
};
})(jQuery);
答案 0 :(得分:0)
scoping背后的整个想法是你无法做到的。 myObj
对于存储在show
中的函数是私有的。
此外,在此特定示例中,myObj
甚至不存在,除非对show()
的调用实际上正在进行中。考虑一下这一点。它在myDisplay()
电话中甚至不存在。 (对show()
的两次不同调用将各自具有不同的myObj
个实例。)
如果您希望外部函数和show共享数据,请将myObj
移出到外部作用域 - 与ret
所在的作用域相同。
答案 1 :(得分:0)
var charge = (function($) {
var myObjA = {
id: 'A'
};
var myObjB = {
id: 'B'
}
var open = function() {
};
var show = function() {
myDisplay();
};
function myDisplay() {
console.log(myObj);
//Here, how to refer to var myObj of show function object?
};
return {
open: open,
show: show
};
})(jQuery);
我建议你使用那样的模块模式。 并且,因为javascripts关闭。 您无法按需读取myObj。 我为你提供了一个希望你喜欢它的解决方案!