Function
getBody関数を持つようにプロトタイプを作成しました。
Function.prototype.getBody = function() {
// Get content between first { and last }
var m = this.toString().match(/\{([\s\S]*)\}/m)[1];
// Strip comments
return m.replace(/^\s*\/\/.*$/mg,'');
};
詳細については、こちらをご覧ください。私はそれをこのようにテストしようとしました:
console.log(console.log.getBody.getBody());
しかし、エラーを受け取りました:TypeError: console.log.getBody is undefined
。console.log
実際にプロトタイプを作成する前に定義されたためにこれが発生する可能性があることがわかったFunction
ので、プロトタイプの直前に空の関数を作成x
して呼び出しようとしました
console.log(x.getBody.getBody());
問題なく動作しました。console.log
のタイプをチェックするtypeof console.log
と「機能」になります。これが試してみるためのCodePenです。console.log.getBody
未定義であることを除いて、私が期待していたことなので、これはすべて実際には驚きではありませんでした。
では、なぜプロトタイピングFunction
は影響を与えないのconsole.log
でしょうか?Firefox18.0.1とFirebug1.11.1を使用しています。