2015-12-23 4 views
-1

Я задаюсь вопрос о том, что происходит, когда вы в конечном итоге делаете что-то подобное в яваскрипте функции:возвращающихся слушатели событий функции яваскрипта

function() {  
var privateMembers : { 
    'methodA' : function() { 
    }, 
    'methodB' : function() { 
    } 
}; 

var publicMembers = { 
    'methodC' : function() { 
    }, 
    'methodD' : function() { 
    } 
}; 

publicMembers.listen = { 
    "myEvent:Listener" : publicMembers.MethodC; 
}; 

return publicMembers; 

} 

Я понимаю, что возвращение только publicMembers делает доступные методы, однако, я Интересно также было бы также сделать publicMembers.listen доступным?

+0

Да, возвращается весь объект publicMembers. Вы попробовали? – Paulpro

ответ

0

есть. эти два кода эквивалентны

var publicMembers = { 
    'methodC' : function() { 
    }, 
    'methodD' : function() { 
    } 
}; 

publicMembers.listen = { 
    "myEvent:Listener" : publicMembers.MethodC; 
}; 

и:

var publicMembers = { 
    'methodC' : function() { 
    }, 
    'methodD' : function() { 
    } 
    'publicMembers' : { 
    listen : { 
     "myEvent:Listener" : publicMembers.MethodC; 
    } 
    } 
}; 
0

publicMembers.listen это просто свойство объекта publicMembers, нет никакой разницы между объявить свойства, используя литералы объектов или точечную нотацию. Таким образом, когда вы добавляете свойство listen к объекту publicMembers, и вы возвращаете весь объект, наверняка у вас также будет доступ к publicMembers.listen. Это довольно легко проверить кстати.