Вопрос по задачке 
		
		
		
		Здравствуйте! 
	Могли бы вы пояснить. Задача из учебника: 
function work(a, b) { 
  alert(a + b); // work - произвольная функция
}
function makeLogging(f, log) { /* ваш код */ }
var log = [];
work = makeLogging(work, log);
work(1, 2); // 3
work(4, 5); // 9
for(var i=0; i<log.length; i++) {
  alert( 'Лог:' + [].join.call(log[i]) ); // "Лог:1,2", "Лог:4,5"
}
Непонятна эта строка, что здесь происходит? [].join.call(log[i]) func.call(context, arg1, arg2,...) здесь у нас context = log[i] ??? я что-то запутался в аргументах call/apply, особенно когда у apply/call в скобках всего один аргумент. Спасибо.  | 
	
		
 В строке [].join.call(log[i]) берётся массив [] и его метод join (встроенный) вызывается с this равным log[i]. 
	Внутренний алгоритм join заключается в том, что this[0]...this[length-1] объединяются через запятую (или другой разделитель, если указан).  | 
	
		
 [].join.call(log[i]) - Вызывает встроенный метод "join", массива []. Этому методу передаётся массив log[i] и метод join принимает его в виде this. 
	Тобиш в твоей ситуации: var log = [[1, 2], [4, 5]]; При первом вызове произойдет следующие: 1)[].join - даст ссылку на встроенный метод "join", массива; 2)join.call([1, 2]) - вызовет этот метод join и задаст внутреннею переменную this = [1, 2]. С этой переменной и произойдут работа "join", который объединит этот массив в строку. Тоже самое если-бы сделать так: [1,2].join(""); Я рекомендую почитать статьи сайта: 1)Call - http://javascript.ru/Function/call 2)Apply - http://javascript.ru/Function/apply  | 
	
		
 Вместо [].join по идее должно быть Array.prototype.join - именно тут этот метод определен. 
	А почему не просто log[i].join() ?  | 
	
		
 Спасибо за помощь! 
	С [].join.call(log[i]) разобрался. У меня просто было решение, в котором log сначала при первом вызове work содержал 1 и 2, при втором вызове 1, 2, 4, 5 и получалось что [].join.call(log[i]) не работал. Я не мог понять зачем внутри call log[i], ведь на первой итерации log[i] = 1. И поэтому смысл выражения для меня терялся. Буду переделывать. И да, зачем одалживать метод, ведь log обычный массив?  | 
	
		
 Илья Кантор, 
	почему ты не запилишь нормальный форум? только домен пропадает  | 
| Часовой пояс GMT +3, время: 14:23. |