如何从对象访问变量?

时间:2016-07-27 19:42:23

标签: javascript

我无法弄清楚如何访问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>

2 个答案:

答案 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);  
});