Javascriptのコンストラクタでnewしてきたヤツを監視する
Javascriptのコンストラクターというと、new されっぱなしなイメージだが、prototype を活用すると逆に new してきたヤツを監視することもできる。
var stalkers, Decoy = function Decoy(name) { //newされたオブジェクトへの参照 Decoy.prototype.watchList[name] = this; this.sayHeyo = function () { alert("Heyo, am " + name + "."); }; }; //prototypeを用いてオブジェクトに依存しないプロパティを作成 Decoy.prototype.watchList = {}; //アクセスしやすいようショートカット Decoy.watchList = Decoy.prototype.watchList; new Decoy("Dick"); new Decoy("Nancy"); for (stalkers in Decoy.watchList) { //直接newしてきたヤツ等にアクセス Decoy.watchList[stalkers].sayHeyo(); //Heyo, am Dick. //Heyo, am Nancy. }
ところでこのパターン、なんていうんだっけ…