f
- это метод для вашего объекта. В результате, когда вы находитесь в f
, this
будет объектом, к которому прикреплен f
. Таким образом, чтобы рекурсивно вызвать f
, используйте this.f()
f: function () {
if (abc.length) {
abc.shift();
this.f(); // Recursive call
}
}
Просто обратите внимание, что внутри f
, this
будет текущим объектом, только если f
вызывается как метод: obj.f();
Если вы сделаете что-то вроде: obj.f.call(lala);
, то this
теперь будет lala
. И если вы делаете что-то вроде:
var func = obj.f;
func();
Теперь this
- это глобальный объект внутри f
(или неопределенный в строгом режиме)