オブジェクトの使い回し?

returnにFunctionオブジェクトを返したり、prototypeを使ったりすると
継続的にローカル変数を参照し続けられますけど
その継続的に参照する変数に、createElementで作成したオブジェクトを使うとどうなるのか?
試しに、ボタンを作成してクリックすると、自身を削除してから1秒後に
継続的に参照しているオブジェクトで、テキストの数値を1ずつ足して作成する
ということをしてみた。

function createElm() {
    var n   = 0;
    var o   = this;
    var elm = document.createElement('button');

    elm.onclick = function() {
        alert(this.uniqueID);
        o.append();
    };
    createElm.prototype.append = function() {
        elm.innerText = 'TEST' + (++ n);
        elm.parentNode.removeChild(elm);
        setTimeout(function() {
            document.body.appendChild(elm)
        }, 1000);
    };
};

new createElm().append();

uniqueIDで個別のIDを参照してみると、番号は常に一緒。
onclickも維持したままで、数字だけ変わった。
つまり、同じオブジェクトを繰り返し使っているということか?
削除しないようにしてみると、数字が変わるだけだった。
これを利用すれば、ボタンを押してオブジェクトを作成するイベントで
常にオブジェクトを一つだけにすることが出来るぞなもし。