我制作了原型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,'');
};
See here了解更多信息。
我尝试这样测试:
console.log(console.log.getBody.getBody());
但收到错误:TypeError: console.log.getBody is undefined
。
我发现这可能是因为console.log
在我实际制作原型之前就已经定义了Function
所以我创建了一个空函数x
就在原型设计之前并尝试调用
console.log(x.getBody.getBody());
没有问题。检查类型console.log
with typeof console.log
结果是“函数”。这是一个CodePen尝试一下。所有这一切并不令人意外,因为这正是我所期望的,除了console.log.getBody
未定义。
那么为什么要进行原型设计Function
不影响console.log
?我使用的是 Firefox 18.0.1 和 Firebug 1.11.1。
这似乎是 Firebug 的问题,而不是 Firefox 本身的问题。我的猜测是Function
在 Firebug 中,生活在不同的范围内Function
在您的页面中。 (因为与其他浏览器不同,Firebug 是一个扩展,而不是内置的浏览器工具)
事实上,如果您使用内置的 Firefox 控制台而不是 Firebug (Ctrl+Shift+K),你的代码工作得很好。
有关 Firebug 内部结构的更多信息可以在这里找到
http://getfirebug.com/wiki/index.php/Firebug_Internals
这段摘录可能很有趣
当 Firebug 与 Firefox 分离时,在新的或单独的窗口中打开
窗口,新窗口有自己的作用域。在这个范围内,一些 Firebug
脚本标签编译以创建返回到原始的连接
browser.xul 窗口。最重要的是,chrome.js 对于每个 top 都是独一无二的
级别窗口,但分离窗口使用的 Firebug 对象是
父 browser.xul 的对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)