Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (4)
  • JavaScript: что делает Function.call.apply(…)?

    mnasyrov
    @mnasyrov
    Всё просто :). Цель этого трюка — написать обёртку foo(), которая вызывает bar() в указанном контексте context и с переданными аргументами arg1, arg2 без лишних теложвижений.

    В традиционном виде, это выглядело бы так

    function bar(arg1, arg2) {}

    function foo(context, arg1, arg2) {
    bar.call(context, arg1, arg2);
    }


    Или так для произвольного числа аргументов:

    function bar() {}

    function foo() {
    var context = arguments[0];
    var args = Array.prototype.slice.call(arguments, 1); //делаем массив аргументов для bar
    bar.apply(context, args);
    }


    Вместо этого салата использовать трюк с call.apply:

    function foo() {
    Function.call.apply(bar, arguments);
    }


    Работает это так: aplly вызывает Function.call на объекте bar c переданными в foo параметрами. То есть получаем следующее для самого первого примера с context и arg1, arg2:

    bar.call(context, arg1, arg2)

    Что нам и нужно.
    Ответ написан
    Комментировать
  • Kод на JavaScript для синтаксического разбора конфигурационных файлов (.conf)?

    mnasyrov
    @mnasyrov
    Попробуйте написать свой парсер с использованием peg.js. Это генератор парсеров на основе PEG-грамматик, которые похожи на регулярные выражения.
    Ответ написан
    Комментировать