在摩纳哥编辑器上为javascript设置“this”上下文

时间:2018-02-14 17:38:32

标签: javascript this monaco-editor

创建用于Javascript的编辑器时,是否可以设置“this”关键字最初应用于的上下文(可能是全局范围)?

在Monaco Editor Playground中,如果编辑器的值最初为空白并且我键入this.,我希望看到自动完成列表根据适当的上下文显示可能性。

即使在函数中,键入this.也只会导致函数中出现的单词。没有其他选择。

1 个答案:

答案 0 :(得分:0)

当然不是开箱即用的。问题在于 JavaScript是一种非常棘手的语言。为了能够说明“ ”的当前值,您需要上下文。而且很可能您永远都不会拥有它。

要检查代码,您需要进行3级分析:

  1. 语法分析。摩纳哥有。语法分析可以告诉您有关代码的基本知识。 var是关键字,“ this”是标识符(如果我没记错的话),第2行,pos 3是位于函数中的标识符。没什么。
  2. 语义分析。这种类型的分析还可以告诉您变量的类型。它可以为您提供有关其类型,其成员,也许还有其代码含义的更多信息。在JS中,这是不正确的,因为您可以在运行时在JS中为类型添加或删除成员。因此,您可以得到完全不同的类型。例如,您的类型可能具有1个属性。然后,您可以在代码中有一个for循环,该循环添加与迭代次数一样多的属性(user1,user2等)。因此,在开始时,您会得到一个Company.User1,Company.User2等。

var Company = {}

因此JS中没有100%的准确分析。

  1. 运行时分析-这或多或少是浏览器用来在执行代码时分辨变量的真正类型的原因(对于JS,您不需要知道)。这是在代码执行时完成的。

使用JS,除非您达到3级(运行时分析),否则不能保证您是对的。大多数编辑器将部分地使用某种语法分析,某种语义分析以及(也许)一些运行时分析来尝试使结果更准确。但是它们永远不会准确。

如果您确定这是什么。应该是-您可以通过附加完成提供程序在monaco编辑器中提供自己的自动完成项:

https://microsoft.github.io/monaco-editor/api/interfaces/monaco.languages.completionitemprovider.html