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

Jim*_*uet 5 javascript this monaco-editor

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

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

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

Pav*_*hev 0

当然不是开箱即用的。问题在于JavaScript 是一种相当棘手的语言。为了能够告诉“ this ”的当前值 - 您需要上下文。而且很可能你永远不会拥有它。

要检查代码,您需要进行 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 级(运行时分析)——否则不能保证你是对的。大多数编辑器会部分使用某种语法分析、某种语义分析和(也许)一点运行时分析来尝试使结果更加准确。但它们永远不会准确。

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

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