Chrome的开发者工具摇滚,但他们似乎没有(我能找到)的一件事是找到JavaScript函数定义的一种方法。这对我来说非常方便,因为我正在开发一个包含许多外部JS文件的站点。当然grep解决了这个问题,但在浏览器中会好得多。我的意思是,浏览器必须知道这一点,为什么不公开呢?我的期望是:
首先,这个功能是否存在,我只是错过了它?
如果没有,我猜这会来自WebKit,但找不到Developer Tool feature requests或WebKit's Bugzilla的任何内容。
答案 0 :(得分:344)
让我们说我们正在寻找名为 foo
的功能:
foo\s*=\s*function
(搜索这三个令牌之间有任意数量空格的foo = function
),函数定义的另一个变体是{strong> function\s*foo\s*\(
,function foo(
,这三个标记之间有任意数量的空格。
答案 1 :(得分:70)
这landed in Chrome on 2012-08-26 我不确定确切的版本,我在Chrome 24中注意到了它。
屏幕截图价值一百万字:
我正在使用Console中的方法检查对象。单击“显示函数定义”将我带到源代码中定义函数的位置。或者我可以将鼠标悬停在function () {
字上以查看工具提示中的函数体。你可以像这样轻松检查整个原型链! CDT肯定会摇滚!!!
希望你们都觉得它有用!
答案 2 :(得分:44)
您可以通过在控制台中评估它的名称来打印该功能,如此
> unknownFunc
function unknownFunc(unknown) {
alert('unknown seems to be ' + unknown);
}
这不适用于内置函数,它们只显示[native code]
而不是源代码。
编辑:这意味着该功能已在当前范围内定义。
答案 3 :(得分:30)
2016年更新:在Chrome版本51.0.2704.103
中有Go to member
个快捷方式(在settings > shortcut > Text Editor
中列出)。打开包含您的功能的文件(在DevTools的sources
面板中),然后按:
ctrl + shift + O
或在OS X中:
⌘ + shift + O
这样可以列出并覆盖当前文件的成员。
答案 4 :(得分:17)
导航到函数定义位置的另一种方法是在调试器中断,您可以访问该函数并在控制台中输入函数完全限定名称。这将在控制台中打印函数定义,并提供一个链接,在单击时打开定义函数的脚本位置。
答案 5 :(得分:15)
不同的浏览器以不同的方式执行此操作。
首先打开控制台窗口,右键单击页面并选择"检查元素"或点击 F12 。
在控制台中,键入...
火狐
functionName.toSource()
铬
functionName
答案 6 :(得分:3)
我发现找到全局函数的最快方法就是:
答案 7 :(得分:2)
在Chrome控制台中:
debug(MyFunction)
MyFunction()
答案 8 :(得分:1)
答案 9 :(得分:1)
我在寻找对象方法的来源时遇到了类似的问题。对象名称为myTree
,其方法为load
。我在调用该方法的行上放置了一个断点。通过重新加载页面,执行在此时停止。然后在DevTools控制台上,输入对象以及方法名称,即myTree.load
,然后按Enter键。方法的定义已打印在控制台上:
此外,通过右键单击定义,您可以在源代码中转到其定义:
答案 10 :(得分:0)