var singleton = (function () { var data, method_args; data = []; method_args = []; function add (items) { var i; data.push(items); method_args.push(arguments); } function remove () { data.pop(); method_args.push(arguments); } return { add : add, remove : remove } }());
シングルトンオブジェクトへのアクセスがあります。
シングルトンのパブリックメソッド(例として示します。値は初期化時に作成されるクロージャーです)取得したい配列のメソッドを呼び出します。 これらのメソッドでは、
これは切望された配列を指します。 だからあなたはこれを介してそれに到達することができます。
method_args.pushがなかった場合は、
Array.prototype.pushを再定義することで取得できます(オブジェクトの「窃盗」の後、その場所にすべてを強制的に戻す)。
var original_push, data;
ただし、
プッシュは複数回使用されます。 メソッドの1回限りの失敗は、故障につながる可能性があります。 しかし、私はそのようには感じません。 配列へのリンクをお願いします。 作業の標準ロジックを維持しながら、上記のコードを書き換えることを意味します。 最初の呼び出しでのみこのリンクを取得し、デフォルトの動作を模倣できるほどスマートな新しいプッシュメソッドを作成します。
var original_push, fake_method_calls, data;
出来上がり:羊は無傷で(標準的なロジックは壊れていません)、オオカミはいっぱいです(手にリンク)。