JavaScript おれおれ Advent Calendar 2011 – 16日目

(※「スルー力」は「するーか」じゃなくて「するーりょく」です。)

.apply()を使って他の関数を実行できる事は昨日示しました。

これを応用して、メソッドが呼ばれた際にそのままスルーして、別のメソッドが呼ばれたかのように振る舞う事ができます。

スルー

例によって配列風のオブジェクトを考えます。これに .join()を実装しましょう。

var obj = {
  "0": "a",
  "1": "b",
  "2": "c",
  length: 3,
  join: function() { /* ??? */ }
};

console.log(obj.join());  // "a,b,c"にしたい
console.log(obj.join("/"));  // "a/b/c"にしたい

はてさて、どういう設計で実装しましょうか。仕様は? 試験は?

いえ、自分で書かずに丸ごと放り投げてしまいましょう。ここで .apply()の出番です。

(さらに…)