2013-09-30 5 views
0

Прошу прощения, если это дубликат, но я не могу найти ответ, который я ищу, хотя моя проблема кажется легкой.Как передать параметр функции объекта в Javascript?

Это то, что у меня есть:

function myMain (myParam) { 

    var myObj = { 

     myVal1 : 'demo', 
     myFunc : function (myParam) { 
      console.log (myParam); 
     } 
    }; 

    runDemo(myObj); 

} 

Моя проблема заключается в том, что я хочу, чтобы console.log написать myParam из myMain, но это undefined - почему?

Как я могу позвонить myMain('works'), чтобы консоль записывала works?

FYI: runDemo тоже должен быть вызван с этим единственным объектом и с myFunc как одним из значений объектов - никоим образом не обойти это. Я благодарен за любую помощь, спасибо.

ответ

1

Марка не MyFunc принимать параметр так:

function myMain (myParam) { 

    var myObj = { 

     myVal1 : 'demo', 
     myFunc : function() { 
      console.log (myParam); 
     } 
    }; 

    runDemo(myObj); 

} 

В этом случае myFunc сохраняет значение переменной myParam. Это называется closure.

+0

приятно, это работает - я все еще не совсем понимаю почему, но это так ... спасибо за супер быстрый ответ! Я буду искать «закрытие», но не стесняйтесь объяснять дальше;) – Jook

+0

Это похоже на это: 'var a = 'foo'; function bar() {alert (a);} ' – kzh

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