Warum wirkt sich die Prototyping-Funktion nicht auf console.log aus?

Ich habe einen Prototyp erstelltFunction so dass es eine getBody-Funktion hat:

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,'');
};

SehenHier Für mehr Information. Ich habe versucht, es so zu testen:

console.log(console.log.getBody.getBody());

aber einen Fehler erhalten:TypeError: console.log.getBody is undefined. Ich fand heraus, dass das vielleicht passiert, weilconsole.log wurde vor dem eigentlichen Prototyping definiertFunction Also habe ich eine leere Funktion erstelltx kurz vor dem prototyping und versuchte anzurufen

console.log(x.getBody.getBody());

das hat problemlos geklappt. Überprüfung der Art vonconsole.log mittypeof console.log ergibt "funktion". Hier ist einCodePen um es auszuprobieren. All dies war keine wirkliche Überraschung, da es das ist, was ich erwartet hatte, außer vonconsole.log.getBody undefiniert sein.

Warum also Prototyping?Function nicht betroffenconsole.log? Ich verwende Firefox 18.0.1 mit Firebug 1.11.1.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage