Расширение класса(просто пример) 
		
		
		
		Здравствуйте, подскажите какую роль в выражении определения функции в этом коде играет параметр "context", почему в цикле не указать инструкцию  
	f.call(this, i)и опустить объявление "context". Спасибо. 
Number.prototype.times = function(f, context) {
var n = Number(this);
for(var i = 0; i < n; i++) f.call(context, i);
};
var n = 3;
 n.times(function(n) { console.log(n + " привет");
});
 | 
	
		
 uanr81, это чтобы свой контекст для "f" можно было указывать. 
	
var obj = {foo: 'bar'};
123..times(function() {
   alert(this.foo);
}, obj);
Логичнее наверное написать так: f.call(context || this, i); Т.е., если мы не передаём свой контекст, то будет использоваться this.  | 
	
		
 Получается call вызывается в контексте выражения присваиваемому параметру "context". Честно говоря туман не сильно рассеялся, разве не можно так 
	
Number.prototype.times = function(f) {
var n = Number(this);
for(var i = 0; i < n; i++) f.call(null, i);
};
var n = 3;
n.times(function() {
alert(obj.foo);
});
var obj = {foo: 'bar'};
 опять же без ентого параметра "context". Можно ещё пример, может дойдёт. Спасибо | 
	
		
 Да там у тебя просто мусор. Можно вот так. 
	
Number.prototype.times = function(f) {
for(var i = 0; i < this; i++) f.call(this, i);
};
 3..times(function(n) { 
   console.log(n + " привет");
});
 | 
	
		
 Цитата: 
	
 
Number.prototype.times = function(f) {
for(var i = 0; i < this; i++) f.call(this, i);
};
 
 3..times.call(5, function(n) {
   console.log(n + " привет");
});
это просто тупой код.  | 
	
		
 sedquest, бред пишешь. 
	 | 
	
		
 uanr81, всё дело в удобстве. Предположим, что у нас одна и та же функция используется в разных times, для каждой нужен разный контекст: 
	
var a = {foo: 'bar'};
var b = {bar: 'foo'};
function callback() {
    console.log(this);
};
123..times(callback, a);
456..times(callback, b);
А если нам родительский контекст нужно передать? 
function a() {
    console.log(this); //hi
    123..times(function() {
         console.log(this); //тут уже другой контекст
    });
};
a.call('hi');
function a() {
    console.log(this); //hi
    123..times(function() {
         console.log(this); //hi
    }, this);
};
a.call('hi');
 | 
	
		
 Хотя наверное если obj ,будет не свойством глобального объекта, мой код не сработает. 
	 | 
	
		
 Цитата: 
	
 Спасибо.  | 
	
		
 Ruslan_xDD вы просто красавец, уловили суть вопроса и объяснили доходчиво. Спасибо громадное, а то встретится не понятное при изучении и сколько дальше не вникай всё на месте:victory: :victory: :victory: 
	 | 
	
		
 Цитата: 
	
 Вот примеры вызова: 123..times(); 123.5.times(); Если такая запись пугает, то можно просто в скобки обернуть: (123).times();  | 
	
		
 Ясно, спасибо. С такого угла я выражение не видел:thanks: 
	 | 
| Часовой пояс GMT +3, время: 06:08. |