// このような関数を
Array.prototype.map = function (callback) {
~
};
// このように呼び出すと
Array.prototype.map.call ('foo', function (x) { ~ });
// 以降、map が勝手に fcfCall モードで動作してしまう
var a = [ ~ ].map (function (x) { ~ });
ただ、組み込みメソッドは .call
、.apply
にアクセスしようとするとエラーになるので、DMonkey では「普通の呼び出し方でも .call()
または .apply()
でも使える」というメソッドはまず見かけません。
今回の例のようにポリフィルを実装するなら、.call
、.apply
は使えないと説明しておけばよいと思います。
var s = new String ('foo');
s.map = Array.prototype.map;
のような呼び出し方であれば問題ないはずです。
なお、関数オブジェクトを this
に割り当てようとすると Global
に差し替えられるようです(詳細は未調査)。
今回の記事は勢いで書いたのでどこか間違いがあるかも知れないのでご注意下さい。