Вызов свойств объектов из массива или объекта с параметрами
Допустим у нас есть несколько объектов:
$.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() ? |
Цитата:
|
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> |
Вот я сделал кусок кода, выдает ошибку где 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(); |
упс, понял) $this = this; спасибо))
|
Часовой пояс GMT +3, время: 02:23. |