FunctiongetBody関数を持つようにプロトタイプを作成しました。
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を使用しています。