Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как реализовать передачу функции в функцию?? (https://javascript.ru/forum/misc/23549-kak-realizovat-peredachu-funkcii-v-funkciyu.html)

czp 27.11.2011 18:20

как реализовать передачу функции в функцию??
 
сразу напишу, я не знаю как этот метод называется, поэтому не искал в инете, подскажите как реализовать, или как хоть назывется, что бы мог почитать, в ДЖС слабоват, сильно не ругайте за такой вопрос, столкнулся вот с чем:
есть
var make = (function() {
  куча функций
  ...
  ...
  function test1 (var) { ... } 
  ...
  ...
  куча функций
  return {
    test : function (var){
      test1(var);
    },
    test2 : function (var){
      ololo(var);
    },
  }
}())

вот когда создаешь переменную-функцию, и в конце ретурн, и выбор test1, test2 (make.test1(my_var)) как эта вся конструкция называется?
---
и есле не сложно подскажите, как при помоще этой конструкции мне передать внешнюю функцию во внутырь, или каким то образом указать
make.test ряд действий которые он должен сделать
, к примеру
function ee_nado_peredat() {
  ...
}

var make = (function() {
  ...
  function v_etu_func_nado_peredat () {
    ee_nado_peredat() //вот сдесь что бы выполнила внешнюю функцию
  }
  ...
  return {
    test : function (var){
      test1(var);
    },
    test2 : function (var){
      ololo(var);
    },
  }
}())

trikadin 27.11.2011 18:23

Параметром...

func_1= function(){
 alert(1);
};
func_2= function(func){
 func();
};
func_2(func_1);

czp 27.11.2011 18:50

что то я не особо понял

czp 27.11.2011 18:58

все справился спасибо)) так на в придачу, как такая конструкция называется?
var make = (function() {
  куча функций
  ...
  ...
  function test1 (var) { ... } 
  ...
  ...
  куча функций
  return {
    test : function (var){
      test1(var);
    },
    test2 : function (var){
      ololo(var);
    },
  }
}())

trikadin 27.11.2011 19:25

czp, вам нужно почитать про замыкания.

czp 27.11.2011 20:13

понял))хотя когда то читал замыкание, и уже на этом форуме мне советовал кто то, такой вопрос далеко не убегая, как можно реализовать типо такого??
$('#myplayer').flash({
            'src':'http://www.gdd.ro/gdd/flvplayer/gddflvplayer.swf',
            'width':'230',
            'height':'180',
            'allowfullscreen':'true',
            'allowscriptaccess':'always',
            'wmode':'transparent',
            'flashvars': {
                'vdo':'http://irnika.com.ua/design_company/css/stomacon/irnika_video/tana_pershina.mp4',
                'sound':'50',
         
                'autoplay':'false',
 
            }
        })



что бы я вбивал настройки
к примеру
var make = (function() {
  ...
  return {
    tes1 : function (var){
      test1(var);
    },
    test2 : function (var){
      ololo(var);
    }
  }
}())

make ({
nad_kem__budem_koldovat : document.getElementById('fdf');
4to_budem_delat : { alert('fdfd'),  alert('fdfd2'), alert('fdfd3')};

})

ну и оно мне поставила в нужные места, такое возможно?

trikadin 27.11.2011 20:16

czp, а в чём проблема, собственно? Вы передаёте объект, потом просто обращаетесь к полям объекта.

Почитайте вторую, а потом первую книгу из моего списка.

czp 27.11.2011 20:34

не получается,((
как можно вложить в одно свойство ряд действий??
только одно могу
var пщ = {
  'delta' : alert('hgh')
}

а мне надо типо такого
var пщ = {
  'delta' : elem.style.position = 'absolute';
             elem.style.border = '2px solid #0f0';
             elem..style.zIndex = 100;
}

ну там не обязательно со стилем, и еше момент можно как то передать во внутырь elem??

trikadin 27.11.2011 21:05

czp, идите читать.

czp 29.11.2011 17:06

блин, вообшем не получается, подскажите, уже задрался голову ломать
суть такова:
2 эллемента
el1 = document.getElementById('clickObjects1')
el2 = document.getElementById('clickObjects2')

el1.onmousedown = function() { for_el1(this); }
el2.onmousedown = function() { for_el2(this); }

при движении, или просто когда кнопка нажата(обьект взят), у каждого свое действие,есле бы на всех обьектах одинаковое действие было, то все тогда отлично, но к примеру каждый элем по своему подсвечивается

function for_el1(element) {
  drag.object(element);

  drag.take(function (dragobject) {
    dragobject.style.position = 'absolute';
    dragobject.style.border = '2px solid #0f0';
    dragobject.style.zIndex = 100;
  });
 
  drag.drope(function (dragobject) {
    dragobject.style.border = 'none';
    dragobject.style.zIndex = 0;
  });
}

function for_el2(element) {
  drag.object(element);

  drag.take(function (dragobject) {
    dragobject.style.position = 'absolute';
    dragobject.style.border = '20px solid #fff';
    dragobject.style.zIndex = 100;
  });
 
  drag.drope(function (dragobject) {
    dragobject.style.border = 'none';
    dragobject.style.zIndex = 0;
  });
}


контроллер, которые делает свою работу
var drag = (function() {
  ... // ряд функция и плюшек
  return {
    object : function(element){
               dragobject = element;
     },
    take : function(take){
             onmousedown(take); 
	},
    drope : function(drope) {
	  onmouseup(drope);
	}
  }
}())

так вот в чем вопрос, как мне передать вот эти сами действия которые должны происходить при перетаскивание элема,у каждого свой, хотелось бы такой конструкцией
function for_el1(element) {
  drag.object(element);

  drag.take(function (dragobject) {
    dragobject.style.position = 'absolute';
    dragobject.style.border = '2px solid #0f0';
    dragobject.style.zIndex = 100;
  });
 
  drag.drope(function (dragobject) {
    dragobject.style.border = 'none';
    dragobject.style.zIndex = 0;
  });
}

но оно не совсем работает, так как одновременно срабатывает onmousedown - drag.take и onmouseup - drag.drope, из за того что не правильно передаю подскажите как быть??
drag.take(function (dragobject) {
    dragobject.style.position = 'absolute';
    dragobject.style.border = '2px solid #0f0';
    dragobject.style.zIndex = 100;
  });
 
  drag.drope(function (dragobject) {
    dragobject.style.border = 'none';
    dragobject.style.zIndex = 0;
  });
}

вот этот момент он мне интерпритирует сразу, а мне необходимо что бы он интерпритировал не сразу), как сделать так что бы при нажатие на элем он создовал функции но не интерпритировал их


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