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.