提问人:Jim Bouquet 提问时间:2/15/2018 更新时间:7/12/2020 访问量:1021
在 Monaco Editor for javascript 上设置“this”上下文
Setting "this" context on Monaco Editor for javascript
问:
在创建用于 Javascript 的编辑器时,是否可以设置“this”关键字最初应用的上下文(也许是全局范围)?
在 Monaco Editor Playground 中,如果编辑器的值最初是空白的,并且我键入 我希望看到自动完成列表根据适当的上下文显示可能性。this.
即使在函数中,键入也只会导致函数中出现的单词。没有其他选项可用。this.
答:
0赞
Pavel Donchev
7/12/2020
#1
当然不是开箱即用的。问题是JavaScript是一门非常棘手的语言。为了能够分辨出“this”的当前值 - 您需要上下文。而且很可能你永远不会拥有它。
要检查代码,您需要 3 个级别的分析:
- 语法分析。摩纳哥拥有它。语法分析可以告诉您有关代码的基本信息。那个 var 是一个关键字,“this”是标识符(如果我没记错的话),第 2 行,pos 3 是一个标识符,位于函数中。而已。
- 语义分析。这种类型的分析还可以告诉您变量的类型。它可以为您提供有关其类型、成员以及它们对代码的含义的更多信息。这在 JS 中并不准确,因为您可以在运行时在 JS 中向类型添加或删除成员。因此,您最终会得到完全不同的类型。例如,您可能有一个具有 1 个属性的类型。然后,您可以在代码中创建一个 for 循环,该循环添加与迭代数量一样多的属性(user1、user2 等)。因此,您最终会得到 Company.User1、Company.User2 等,而您开始时:
var Company = {}
因此,在 JS 中没有 100% 准确的分析。
- 运行时分析 - 这或多或少是浏览器用来在代码执行时能够判断变量的真正类型(因为 JS 你不知道)。这是在执行代码时完成的。
使用 JS,除非你达到第 3 级(运行时分析)——否则你不能保证是正确的。大多数编辑器会部分使用某种语法分析、某种语义分析和(可能)一些运行时分析来尝试使结果更准确。但它们永远不会准确。
如果你确定这是什么。应该是 - 您可以通过附加完成提供程序在 Monaco 编辑器中提供自己的自动完成项:
评论
0赞
manikanta
3/2/2023
有没有办法返回对象原型而不是返回完成列表?就我而言,我在运行时使用 .registerCompletionItemProvider
评论