А существует ли более последовательная и подробная документация чем в nmpjs.org? А то, несмотря на все статьи и пример, непонятно с какой стороны подступиться.
А то что impress требует права root для запуска сервера даже при установке через npm install impress в домашний каталог это нормально или у меня что-то пошло не так? Если да, то объясните пожалуйста с чем это связано и как лучше разворачивать impress на этапе отладки приложения. Песочница?
Я оба этих подхода использую. Всегда считал что, например, отличать гетер от сетера по отсутствию аргумента вполне себе логично. Хотя может это и не совсем тот случай.
Можно сказать так: я не пропагандирую свой подход как панацею, но если уж где-то оказывается целесообразным устроить разбор arguments, то лучше это сделать как-то так чем колдовать с индексами.
Согласен в чём-то. Самое интересное что разрулив ситуацию, которая привела к решению, описанному в статье, я тут-же написал новый метод-обёртку, который устанавливал свежедобавленный аргумент и вызывал исходную функцию.
Возможно получилось бы добиться того-же не усложняя аргументов исходной функции, но больно уж она важнуюю роль играла. Наиболее безопасным показалось поступить с её ядром как с чёрным ящиком.
Решение в том, чтобы не делать разборов arguments. Метод checkin сделает это за вас. Налицо упрощение при вызове и весьма умеренная сложность при разборе.
И тем не менее авторы jQuery предусмотрели передачу duration, easing, complete через список аргументов, а не только в объекте свойств.
Значит это кому-то нужно, потому-что упрощает жизнь.
Согласен, весьма распространённый случай, а как быть с Number и String, которые могут стоять перед колбеком?
.animate( properties [, duration ] [, easing ] [, complete ] )
1. Если среди них есть необязательные, то при вызове придётся указаывать его как null например.
2. Невозможно использование 2х разных прототипов.
Как пример могу привести метод animate из jQuery API. Он изобилует необязательными аргументами и имеет 2 прототипа.
Можно сказать так: я не пропагандирую свой подход как панацею, но если уж где-то оказывается целесообразным устроить разбор arguments, то лучше это сделать как-то так чем колдовать с индексами.
Вообще иной раз жертвую компактностью ради наглядности.
Возможно получилось бы добиться того-же не усложняя аргументов исходной функции, но больно уж она важнуюю роль играла. Наиболее безопасным показалось поступить с её ядром как с чёрным ящиком.
if(args.checkin('number a', 'opt object b', 'opt bool c', 'opt function d')){
//Используем параметры args.a, args.b, args.c, args.d
…
}
foo(1, true, function(){});
И если, как в примере, параметра b нет, то параметр с всё равно будет доступен как args.c
Значит это кому-то нужно, потому-что упрощает жизнь.
.animate( properties [, duration ] [, easing ] [, complete ] )
2. Невозможно использование 2х разных прототипов.
Как пример могу привести метод animate из jQuery API. Он изобилует необязательными аргументами и имеет 2 прототипа.
.animate( properties [, duration ] [, easing ] [, complete ] )
.animate( properties, options )