跳转到定义不适用于在 window 上定义为 属性 的对象

Jump to definition does not work on objects defined as property on window

在我在 emacs 中设置的 tern 中,当我的光标位于 obj.foo()foo 下方(在最后一行)时,当我执行 M-. 时,这段代码工作正常:

var obj = {};
obj.foo = function() {
    return true;
};

obj.foo();

但是当我在下面做同样的事情时,它说 "No definition found."

window.obj = {};
obj.foo = function() {
    return true;
};

obj.foo();

我尝试将 obj 的每个引用都设为 window.obj。似乎没有帮助。我错过了什么吗?

我假设您是说将光标放在 window.obj 上并点击 M-. 是行不通的。要找到相应的定义,M-. 需要在 TAGS 文件中对其进行索引。如果还没有完成那你就倒霉了:它不会被识别。

参见 Emacs 手册,节点 Tags and its children, particularly node Create Tags Table

看来你的问题是你没有使用 browser JSON 定义 window[=20 的类型定义=] 对象。你的 .tern-project 应该是这样的:

{"libs":["ecma5","browser"]}

我在没有 浏览器 的情况下试过,我遇到了和你一样的问题。如果我声明 browser,效果很好。