Как инициализировать все методы внутри пространства имен? Пространства имен javascript ИНИЦИАЛИЗАЦИЯ ВСЕХ методов - PullRequest
1 голос
/ 09 сентября 2011

Может быть, это простой вопрос, но я не смог найти ничего на Google или на этом сайте.Так что, если у меня есть

var myNamespace = {

    foo: function() {
    },

    bar: function() {
    }
};

, как бы мне загрузить foo () и bar () без необходимости делать это один за другим, например,

<script type="text/javascript">
    $(document).ready(function(){
        myNamespace.foo();
        myNamespace.bar();
        .
        .
        .
    });
</script>

Ответы [ 3 ]

2 голосов
/ 09 сентября 2011
for (var k in namespace) {
    if (typeof namespace[k] === 'function') {
        namespace[k]();    
    }
}
2 голосов
/ 09 сентября 2011
var func;

for (func in namespace) {
   if (namespace.hasOwnProperty(func) {
       if (typeof namespace == 'Function') {
           namespace[func]();
       }
   }
}
1 голос
/ 09 сентября 2011

Я не проверял это, но что-то подобное должно оказаться полезным.Каждая функция в JavaScript имеет метод call() для ее вызова.Тогда:


$(document).ready(function() {
  $.each(myNamespace, function(index, obj) {
    if (typeof(obj) == 'function')
    {
       obj.call(myNamespace);
    }
  });
});

Если вам нужно заменить ссылку на область действия this, вы можете исправить это на jQuery.proxy.

...