Сообщение от x-yuri
|
к тому же lambda навязывает задание контекста, т.е. контекст для методов надо либо жестко прописывать в обертке (но тогда нельзя будет вызвать метод в другом контексте), либо указывать при каждом вызове
|
Это особенность текущей реализации, которая не имеет отношения к аргументам по-умолчанию.
Сообщение от x-yuri
|
нет, я говорил "вне функции". С таким подходом надо создать обертку для каждой функции и использовать функцию только через нее (чтобы не дублировать значения по умолчанию):
function f(a, b){alert(this); return a + b}
function fWrapper(){
return lambda(f, 'Hello, world!', {a: 50, b: 77, c: 42});
}
|
К чему этот код? Вы собираетесь использовать одну функцию с разными аргументами по-умолчанию? Функция сразу должна быть создана через lambda.
Сообщение от x-yuri
|
а что помешает сделать ошибку или опечатку в другом месте? Например, вызвать функцию с другими значениями по умолчанию или забыть воспользоваться оберткой
|
Функцию Вы объявляете один раз, а ее тело может правиться много и долго. Как забыть обертку - не понял.