Is it possible to call recursively a method from an object literal?
For example:
(function () {
    'use strict';
    var abc = ['A', 'B', 'C'],
        obj = {
            f: function () {
                if (abc.length) {
                    abc.shift();
                    f(); // Recursive call
                }
            }
        };
    obj.f();
}());
Error: 'f' was used before it was defined.
Thanks.
You can, by using a named function expression:
        f: function myself() {
            if (abc.length) {
                abc.shift();
                myself(); // Recursive call
            }
        }
A must-read: http://kangax.github.com/nfe/
f is a method on your object.  As a result, when you're in f, this will be the object to which f is attached.  So to recursively call f, use this.f()
f: function () {
    if (abc.length) {
        abc.shift();
        this.f(); // Recursive call
    }
}
Just note that inside of f, this will only be the current object if f is invoked as a method: obj.f();
If you do somethinig like:  obj.f.call(lala);, then this will now be lala.  And if you do something like:
var func = obj.f;
func();
Now this is the global object inside of f (or undefined in strict mode)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With