我无法弄清楚如何访问pubOuter,有人能想出这个吗?它不断返回 undefined ,因为我无法找到从 inner2()函数传递外部的方法。或者我错过了一些明显的东西。非常感谢。
的Javascript
var myObject = (function(){
var outer;
function inner1(IN_number){
outer = IN_number*2;
}
function inner2(){
inner1(10);
return outer;
}
return {
pubFnInner1: inner1,
pubFnInner2: inner2,
pubOuter: outer
};
})();
$("#click").on("click", function(){
console.log("outer" + myObject.pubOuter);
});
HTML
<button id="click">Click</button>
答案 0 :(得分:1)
您正在成功访问putOuter
媒体资源。问题是在你使用之前它还没有被设置为任何东西。
我修改了代码以将outer
初始化为1
。否则,当您在IN_number
函数中将其乘以inner1
时,会产生NaN
。
var myObject = (function(){
var outer = 1;
function inner1(IN_number){
outer = IN_number*2;
}
function inner2(){
inner1(10);
return outer;
}
return {
pubFnInner1: inner1,
pubFnInner2: inner2,
pubOuter: outer
};
})();
$("#click").on("click", function(){
console.log("outer" + myObject.pubOuter);
myObject.pubFnInner1(10);
console.log("outer" + myObject.pubOuter);
// or combine both steps by using your pubFnInner2 method.
console.log("outer" + myObject.pubFnInner2());
});
答案 1 :(得分:0)
pubOuter
未定义,因为您将其分配给outer
未定义,因为您从未运行inner1
,您需要执行此操作:
var myObject = (function(){
var outer;
function inner1(IN_number){
outer = IN_number*2;
}
function inner2(){
inner1(10);
return outer;
}
return {
pubFnInner1: inner1(),
pubFnInner2: inner2(),
pubOuter: outer
};
})();
$("#click").on("click", function(){
console.log("outer" + myObject.pubOuter);
});