Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вызов свойств объектов из массива или объекта с параметрами (https://javascript.ru/forum/jquery/55936-vyzov-svojjstv-obektov-iz-massiva-ili-obekta-s-parametrami.html)

Sanu0074 21.05.2015 17:46

Вызов свойств объектов из массива или объекта с параметрами
 
Допустим у нас есть несколько объектов:
$.Nav = {
        init: function(){
            return this;
        },

        begin: function(){
            alert('begin nav');
        },

        destroy: function(){
            alert('destroy nav');
        }
    }

    $.Nav2x = {
        init: function(){
            return this;
        },

        begin: function(){
            alert('begin Nav2x');
        },

        destroy: function(){
            alert('destroy Nav2x');
        }
    }
	
    $.Nav3x = {
        init: function(){
            return this;
        },

        begin: function(){
            alert('begin Nav3x');
        },

        destroy: function(){
            alert('destroy Nav3x');
        }
    }


Есть строка с параметрами в которой говорится какие объекты будут запускаться:
var params = {"Nav3x","Nav2x"};


И где-то дальше есть функции которые управляют объектами переданными в params:
function toDo(){
		//тут должны вызваться методы "begin" всех объектов
		//которые есть в params
	}
	
	function toStop(){
		//тут должны вызваться методы "destroy" всех объектов
		//которые есть в params
	}


Каким образом можно реализовать тела функций toDo() и toStop() ?

рони 21.05.2015 17:55

Цитата:

Сообщение от Sanu0074
var params = {"Nav3x","Nav2x"};

может [] ?

рони 21.05.2015 18:09

Sanu0074,
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
    $.Nav = {
        init: function(){
            return this;
        },

        begin: function(){
            alert('begin nav');
        },

        destroy: function(){
            alert('destroy nav');
        }
    }

    $.Nav2x = {
        init: function(){
            return this;
        },

        begin: function(){
            alert('begin Nav2x');
        },

        destroy: function(){
            alert('destroy Nav2x');
        }
    }

    $.Nav3x = {
        init: function(){
            return this;
        },

        begin: function(){
            alert('begin Nav3x');
        },

        destroy: function(){
            alert('destroy Nav3x');
        }
    }
   var params = ["Nav3x","Nav2x"];
   function test(params,metod)
   {
      $.each(params, function(){
         $[this][metod]()
         });
   }
  function toDo(){
       test(params,'begin')
	}

	function toStop(){
		test(params,'destroy')
	}
  toDo()
  toStop()
});




  </script>

Sanu0074 22.05.2015 09:50

Вот я сделал кусок кода, выдает ошибку где console.log(.params) - будто undefined
Вот я написал что:
$.Enquire = ({
        MOBILE: "screen and (max-width:480px)",
        TABLET: "screen and (max-width: 992px)",
        DESKTOP: "",
        params: ["Nav"],
        init: function(){

            console.log('Eq init');

            enquire.register(this.TABLET, {
                deferSetup: true,
                setup: function () {

                },
                match: function () {
                    console.log('match');
                    console.log($.Enquire.params);
                    $.Enquire.params.forEach(function(v){$[v].begin()});
                },
                unmatch: function () {
                    console.log('UNmatch');
                    $.Enquire.params.forEach(function(v){$[v].destroy()});
                }
            });
        }
    }).init();

Sanu0074 22.05.2015 10:18

упс, понял) $this = this; спасибо))


Часовой пояс GMT +3, время: 10:37.