Почему функция создания прототипа не влияет на console.log?
Я прототипировал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
? Я использую Firefox 18.0.1 с Firebug 1.11.1.