質問: s.myMap(function(item) { return item * 2; }); ``` の処理を実行することができるのでしょうか?
回答: `Array.prototype.myMap = function(callback) {` が`Array`プロトタイプ、 すなわち、**配列そのものにメソッドを追加する**構文だからです。 なので、`var s = [23, 65, 98, 5];`の`s`変数は、配列なので、 その配列変数の`myMap`メソッドを実行した際は、 `this`は、`s`変数自体を指すことになります。 ですが、ぶっちゃけ、今のご時世に、既存のプロトタイプに対して、 プロトタイプ汚染をする構文は、あまりよろしくないような気がします。 (個人的に) よほど、既存の物に追加変更を加えねばならないって時なら、考えられますが。 ましてや、クラス構文でも同じことはできるので、 (よりコード保全をした状態で) あまりよろしくない問題のような気がします。 っと、あくまで個人的見解なので、あしからず。