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()
の出番です。