powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Пример когда нужно чтобы функция присваивалась переменной.
13 сообщений из 13, страница 1 из 1
Пример когда нужно чтобы функция присваивалась переменной.
    #38346293
lanzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пойму когда это может понадобиться.
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346297
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lanzerНе пойму когда это может понадобиться.

Какую конструкцию имеете ввиду? Просто разные ответы могут быть :) Напишите пример.
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346383
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В более-менее сложных ajax-приложениях — всегда.
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346447
lanzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр Какую конструкцию имеете ввиду? Просто разные ответы могут быть :) Напишите пример.
Я как раз таки про это и хотел спросить - в каких конструкциях? :) Наверное самый распространенный пример на ваш взгляд подойдет.

AntonariyВ более-менее сложных ajax-приложениях — всегда.
Если собираюсь писать Ajax на jQuery, тоже?
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346451
Фотография Малыхин Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключевое слово "переменная"
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346459
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lanzerПрограмёр Какую конструкцию имеете ввиду? Просто разные ответы могут быть :) Напишите пример.
Я как раз таки про это и хотел спросить - в каких конструкциях? :) Наверное самый распространенный пример на ваш взгляд подойдет.

AntonariyВ более-менее сложных ajax-приложениях — всегда.
Если собираюсь писать Ajax на jQuery, тоже?

Не могу вспомнить (придумать) ни одного случая, когда это было бы необходимым... Но бывают случаи, когда это было бы удобным:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
function getBrowser(){
...
}

function forChrome(str){
  ...//действия для хрома
}

function forFirefox(str){
  ...//действия для файрфокса
}

function forUndefinedBrowser(str){
  ...//если браузер не определили
}

function someFunc(some_var, browser_func){
 var str = func(some_var);
 ...
 browser_func(str)
...
}

var f = null;
switch(getBrowser()){
  case "chrome": f=forChrome; break;
  case "firefox": f=forFireFox; break;
  default: f=forUndefinedBrowser;
}

someFunc('my var', f); //вот тут удобно использовать



По такому принципу функции принимают разные callback методы, например. Можно было бы и сам вызов поставить в switch..case, однако это было бы менее удобно и в больших проектах, где много кода, ещё и путано получилось бы (сложнее отследить что и когда вызывается и всё такое).

Итак, мой вывод: в любом случае можно обойтись без данной конструкции (запись функции в переменную), но с ней получается лучше и аккуратнее.
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346498
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрНе могу вспомнить (придумать) ни одного случая, когда это было бы необходимым...Проще показать такой случай:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
 DWindow.prototype.createToolbar = function ($container, toolbar) {
        var mWindow = this;
        var toolClicker = function () {
            var call = mWindow.toolbarFunc[$(this).attr("toolIndex")];
            var opts = call.button.linkbutton("options");
            if(opts.disabled) {
                return;
            }
            if(call.group) {
                for(var x = 0; x < mWindow.toolbarFunc.length; x++) {
                    if(mWindow.toolbarFunc[x]) {
                        if(call.group == mWindow.toolbarFunc[x].group) {
                            mWindow.toolbarFunc[x].button.menubutton("enable");
                        }
                    }
                }
                call.button.menubutton("disable");
            }
            call.func.apply(mWindow, call.args);
        };
        for(var i = 0; i < toolbar.length; i++) {
            var tlb = toolbar[i], sTlb = toolbar[i];
            if(sTlb == "separator") {
                $("<span>|</span>").appendTo($container).addClass("separator");
                this.toolbarFunc.push(null);
            } else {
                var call = new ToolbarFunc();
                call.selectionRespond = tlb.selectionRespond;
                call.button = $("<a href='#'/>").attr("toolIndex", i).appendTo($container);
                if(tlb.clickSource) {
                    call.func = new Function("", tlb.clickSource);
                    call.group = tlb.group;
                    call.button.bind("click", toolClicker);
                } else if(!tlb.menu) {
                    alert("This toolbar for object " + this.options.webitem + " has expired");
                    break;
                }
                this.toolbarFunc.push(call);
                if(tlb.menu) {
                    var $menu_div = $("<div style='display:none'>").css("width", tlb.width ? tlb.width : "600px;").attr("id", "tmenu_" + mWindow.options.webitem + "_" + mWindow.options.idValue + "_" + i).appendTo(document.body);
                    call.button.attr("menu", "#" + $menu_div.attr("id"));
                    for(var j = 0; j < tlb.menu.length; j++) {
                        call = new ToolbarFunc();
                        call.func = new Function("", tlb.menu[j].clickSource);
                        call.button = $("<div>").attr("toolIndex", this.toolbarFunc.length).bind("click", toolClicker).text(tlb.menu[j].text).appendTo($menu_div);
                        call.isMenu = true;
                        this.toolbarFunc.push(call);
                    }
                    this.menudivs.push($menu_div);
                }
                call.button.menubutton({
                    Window: this,
                    iconCls: tlb.iconCls,
                    text: tlb.text,
                    disabled: tlb.selectionRespond
                });
            }
        }
    };
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346540
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПрограмёрНе могу вспомнить (придумать) ни одного случая, когда это было бы необходимым...
Проще показать такой случай:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
 DWindow.prototype.createToolbar = function ($container, toolbar) {
        var mWindow = this;
        var toolClicker = function () {
            var call = mWindow.toolbarFunc[$(this).attr("toolIndex")];
            var opts = call.button.linkbutton("options");
            if(opts.disabled) {
                return;
            }
            if(call.group) {
                for(var x = 0; x < mWindow.toolbarFunc.length; x++) {
                    if(mWindow.toolbarFunc[x]) {
                        if(call.group == mWindow.toolbarFunc[x].group) {
                            mWindow.toolbarFunc[x].button.menubutton("enable");
                        }
                    }
                }
                call.button.menubutton("disable");
            }
            call.func.apply(mWindow, call.args);
        };
        for(var i = 0; i < toolbar.length; i++) {
            var tlb = toolbar[i], sTlb = toolbar[i];
            if(sTlb == "separator") {
                $("<span>|</span>").appendTo($container).addClass("separator");
                this.toolbarFunc.push(null);
            } else {
                var call = new ToolbarFunc();
                call.selectionRespond = tlb.selectionRespond;
                call.button = $("<a href='#'/>").attr("toolIndex", i).appendTo($container);
                if(tlb.clickSource) {
                    call.func = new Function("", tlb.clickSource);
                    call.group = tlb.group;
                    call.button.bind("click", toolClicker);
                } else if(!tlb.menu) {
                    alert("This toolbar for object " + this.options.webitem + " has expired");
                    break;
                }
                this.toolbarFunc.push(call);
                if(tlb.menu) {
                    var $menu_div = $("<div style='display:none'>").css("width", tlb.width ? tlb.width : "600px;").attr("id", "tmenu_" + mWindow.options.webitem + "_" + mWindow.options.idValue + "_" + i).appendTo(document.body);
                    call.button.attr("menu", "#" + $menu_div.attr("id"));
                    for(var j = 0; j < tlb.menu.length; j++) {
                        call = new ToolbarFunc();
                        call.func = new Function("", tlb.menu[j].clickSource);
                        call.button = $("<div>").attr("toolIndex", this.toolbarFunc.length).bind("click", toolClicker).text(tlb.menu[j].text).appendTo($menu_div);
                        call.isMenu = true;
                        this.toolbarFunc.push(call);
                    }
                    this.menudivs.push($menu_div);
                }
                call.button.menubutton({
                    Window: this,
                    iconCls: tlb.iconCls,
                    text: tlb.text,
                    disabled: tlb.selectionRespond
                });
            }
        }
    };



Может ошибаюсь, но разве так работать не будет?
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
 DWindow.prototype.createToolbar = function ($container, toolbar) {
        var mWindow = this;
        function toolClicker() {
            var call = mWindow.toolbarFunc[$(this).attr("toolIndex")];
            var opts = call.button.linkbutton("options");
            if(opts.disabled) {
                return;
            }
            if(call.group) {
                for(var x = 0; x < mWindow.toolbarFunc.length; x++) {
                    if(mWindow.toolbarFunc[x]) {
                        if(call.group == mWindow.toolbarFunc[x].group) {
                            mWindow.toolbarFunc[x].button.menubutton("enable");
                        }
                    }
                }
                call.button.menubutton("disable");
            }
            call.func.apply(mWindow, call.args);
        };
        for(var i = 0; i < toolbar.length; i++) {
            var tlb = toolbar[i], sTlb = toolbar[i];
            if(sTlb == "separator") {
                $("<span>|</span>").appendTo($container).addClass("separator");
                this.toolbarFunc.push(null);
            } else {
                var call = new ToolbarFunc();
                call.selectionRespond = tlb.selectionRespond;
                call.button = $("<a href='#'/>").attr("toolIndex", i).appendTo($container);
                if(tlb.clickSource) {
                    call.func = new Function("", tlb.clickSource);
                    call.group = tlb.group;
                    call.button.bind("click", toolClicker);
                } else if(!tlb.menu) {
                    alert("This toolbar for object " + this.options.webitem + " has expired");
                    break;
                }
                this.toolbarFunc.push(call);
                if(tlb.menu) {
                    var $menu_div = $("<div style='display:none'>").css("width", tlb.width ? tlb.width : "600px;").attr("id", "tmenu_" + mWindow.options.webitem + "_" + mWindow.options.idValue + "_" + i).appendTo(document.body);
                    call.button.attr("menu", "#" + $menu_div.attr("id"));
                    for(var j = 0; j < tlb.menu.length; j++) {
                        call = new ToolbarFunc();
                        call.func = new Function("", tlb.menu[j].clickSource);
                        call.button = $("<div>").attr("toolIndex", this.toolbarFunc.length).bind("click", toolClicker).text(tlb.menu[j].text).appendTo($menu_div);
                        call.isMenu = true;
                        this.toolbarFunc.push(call);
                    }
                    this.menudivs.push($menu_div);
                }
                call.button.menubutton({
                    Window: this,
                    iconCls: tlb.iconCls,
                    text: tlb.text,
                    disabled: tlb.selectionRespond
                });
            }
        }
    };
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346547
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ээээ
вообще-то да)
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346592
jsz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jsz
Гость
Почитайте тут хотя бы, раздел "Именованные функциональные выражения".
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346600
callback
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
14627246 -
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
.......
function someFunc(some_var, browser_func){
 ...
 browser_func('blah-blah')  //вот тут удобно использовать
...
}

var f = forUndefinedBrowser;

switch(getBrowser()){
  case "chrome": f=forChrome; break;
  case "firefox": f=forFireFox; break; 
}

someFunc('my var', f);


14627180
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346615
lanzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр , коротко и понятно. A lot of thanks ).
Antonariy , сложные примеры для меня, но тоже спасибо.
...
Рейтинг: 0 / 0
Пример когда нужно чтобы функция присваивалась переменной.
    #38346624
lanzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jszПочитайте тут хотя бы, раздел "Именованные функциональные выражения".
Благодарствую.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Пример когда нужно чтобы функция присваивалась переменной.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]