Показать сообщение отдельно
  #15 (permalink)  
Старый 01.05.2011, 15:32
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Это уже интереснее, но я все же склоняюсь к тому чтобы не разбирать по именам аргументы
function merge(arr1, arr2){
	var length = Math.max(arr1.length, arr2.length),
		arr = [];
	for(var i = 0; i < length; ++i){
		arr.push(i < arr1.length ? arr1[i] : arr2[i]);
	}
	return arr;
}

function withDefaults(fn, defaults, cnx){
	if(!defaults){
		defaults = [];
	}
	if(!cnx) {
		cnx = this;
	}
	
	return function(/* args for fn*/){
		return fn.apply(cnx, merge(arguments, defaults));
	}
		
}
	
function mul(a, b){
	alert(a + "*" + b + " = " + a*b);
}
	
withDefaults(mul, [3,5])(5,7);
withDefaults(mul, [3,5])();
withDefaults(mul, [3,5])(6);
__________________
readOnly

Последний раз редактировалось poorking, 01.05.2011 в 17:37.
Ответить с цитированием