Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么原型功能不影响console.log?_Javascript_Console_Prototyping - Fatal编程技术网

Javascript 为什么原型功能不影响console.log?

Javascript 为什么原型功能不影响console.log?,javascript,console,prototyping,Javascript,Console,Prototyping,我原型化了函数,因此它有一个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,''); }; 有关更多信息,请参阅。 我

我原型化了
函数
,因此它有一个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未定义
。 我发现这可能是因为
console.log
是在我实际原型化
Function
之前定义的,所以我在原型化之前创建了一个空函数
x
,并尝试调用

console.log(x.getBody.getBody());
没有问题。检查
console.log
的类型与
typeof console.log
结果为“函数”。这里有一个方法可以尝试一下。所有这一切其实并不令人惊讶,因为除了
console.log.getBody
未定义之外,这正是我所期望的


那么,为什么原型化
功能不影响
控制台.log
?我将Firefox 18.0.1与Firebug 1.11.1一起使用。

这似乎是Firebug的问题,而不是Firefox本身的问题。我的猜测是Firebug中的
Function
与页面中的
Function
处于不同的范围。(与其他浏览器不同,Firebug是一个扩展,而不是内置的浏览器工具)

事实上,如果您使用内置的Firefox控制台()而不是Firebug,那么您的代码工作得非常好

关于Firebug内部的更多信息可以在这里找到

这段摘录可能很有趣

当Firebug与Firefox分离时,以新的或单独的方式打开 窗口,新窗口有自己的作用域。在这个范围内,一些萤火虫 脚本标记编译以创建回原始的连接 browser.xul窗口。最重要的是,chrome.js对于每个top来说都是独一无二的 级别窗口,但分离窗口使用的Firebug对象是 父browser.xul的对象


适用于我(IE10)这在Chrome 24中适用于我。谢谢,我在问题中添加了browser+版本。好像我需要更多的证据证明Firefox是一个愚蠢的浏览器:d问题在Firebug中,而不是Firefox中。:)谢谢,我想我现在可以拿到了。我仍然不完全理解Firebug对
console.log
function(){return function.apply.call(x.log,x,arguments);}
的实现,但这是另一个问题。