Показать сообщение отдельно
  #26 (permalink)  
Старый 02.05.2011, 21:32
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от 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
а что помешает сделать ошибку или опечатку в другом месте? Например, вызвать функцию с другими значениями по умолчанию или забыть воспользоваться оберткой
Функцию Вы объявляете один раз, а ее тело может правиться много и долго. Как забыть обертку - не понял.
Ответить с цитированием