オブジェクトの使い回し?
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も維持したままで、数字だけ変わった。
つまり、同じオブジェクトを繰り返し使っているということか?
削除しないようにしてみると、数字が変わるだけだった。
これを利用すれば、ボタンを押してオブジェクトを作成するイベントで
常にオブジェクトを一つだけにすることが出来るぞなもし。