2015-06-23 2 views
0

Как я могу обратиться к локальной переменной внутри частной функции? Например, в следующем коде, в функции myDisplay, как я могу получить объект myObject объекта show function и получить id = 'B'?Локальный шаблон javascript модуля

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); 
+3

Вы не можете (к счастью). Передайте это как аргумент. – zerkms

ответ

0

Вся идея позади scoping заключается в том, что вы не можете. myObj является закрытым для функции, хранящейся в show.

Кроме того, в данном конкретном примере myObj даже не существует, если не выполняется вызов show(). Рассмотрим этот момент. Он даже не будет существовать во время вызова myDisplay(). (И два разных вызовов show() будут иметь по-разному myObj экземпляров.)

Если вы хотите внешнюю функцию и показать для обмена данными, перейти myObj к внешней области - один и тот же объем, что ret находится в

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, как хотите. Я предоставил вам решение, которое вам понравится!

+0

Спасибо за ваш ответ, но если я хочу получить доступ к id = 'B', значит, это тоже должно быть функцией шоу, верно? –

+0

Да! ты прав. И я отправлю его вам в новый ответ – mrjumpy

+1

Но, ух, теперь у вас есть два vars, локальных для внешней функции 'charge', которые называются' myObj'. В 'myDisplay()', что такое 'myObj.id'? 'A' или' B'? –

Смежные вопросы