Incrémentation alphabétique en javascript

Comment créer une incrémentation alphabétique en javascript...

Nous souhaitons obtenir une série de chaînes alphabétiques « incrémentées » du genre :

a, b, c, … x, y, z, aa, ab, ac, … ax, ay, az, aaa, aab, ...
Incrémentation alphabétique.

En PHP, la chose est simple puisque l'opérateur d'incrémentation fonctionne sur les chaînes de caractères. Un objet d'incrémentation alphabétique pourrait alors s'écrire :

class AlphabeticIncrementor {
    protected $curr;
    public function __construct() {
        $this->reset();
    }
    public function current() {
        return $this->curr;
    }
    public function next() {
        $this->curr++;
        return $this->current();
    }
    public function reset() {
        $this->curr = 'a';
    }
}
Objet PHP pour l'incrémentation alphabétique.

En javascript, l'opérateur d'incrémentation ne fonctionne pas avec les chaînes de caractères. Voici donc un petit objet pour obtenir une incrémentation identique (pas sûr que ce soit la meilleure manière de faire mais c'est ce qui m'est venu en quelques minutes) :

/**
 *  Incrémenteur alphabétique.
 * 
 *      a, b, c, … z, aa, ab, ac, … az, aaa, aab, aac, ...
 */
var AlphabeticIncrementor = function() {
    this.value = null;
    this.pointer = 0;
};

AlphabeticIncrementor.prototype = {
    constructor: AlphabeticIncrementor,
    /**
     * Récupérer la valeur courante.
     * @return {String}
     */
    current: function() {
        if (this.value === null) {
            this.value = this.get(this.pointer);
        }
        return this.value;
    },
    /**
     * Passer à la valeur suivante.
     * @return {String} La nouvelle valeur courante.
     */
    next: function() {
        this.set(this.pointer + 1);
        return this.current();
    },
    /**
     * Réinitialiser l'incrémenteur
     */
    reset: function() {
        this.value = null;
        this.pointer = 0;
    },
    /**
     * Placer l'incrémenteur à une position donnée.
     * @param {int} value
     */
    set: function(value) {
        this.pointer = value;
        this.value = null;
    },
    /**
     * récupérer une valeur quelconque
     * @param {int} value
     * @return {String}
     */
    get: function(value) {
        var str = '', code;
        do {
            code = value % 26;
            str = String.fromCharCode(65 + code) + str;
            value = value / 26 - 1;
        } while (value >= 0);
        return str;
    }
};
Objet javascript pour l'incrémentation alphabétique.

On pourra ensuite améliorer la chose en permettant la définition d'un point de départ et/ou d'une incrémentation maximale.