javascript - 在 Monaco Editor for javascript 上设置 "this"上下文

标签 javascript this monaco-editor

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

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

即使在函数中,输入 this.只会导致出现在函数中的单词。没有其他可用选项。

最佳答案

当然不是开箱即用。问题是 JavaScript 是一种相当棘手的语言 .为了能够知道“ 这个 ”的当前值 - 你需要上下文。而且很可能你永远不会拥有它。
要检查代码,您有 3 个分析级别:

  • 语法分析 .摩纳哥有。语法分析可以告诉您有关代码的基本信息。 var 是关键字,“this”是标识符(如果我没记错的话),第 2 行 pos 3 是标识符,位于函数中。而已。
  • 语义分析 .这种类型的分析还可以告诉您变量的类型。它可以为您提供有关其类型、成员的更多信息,也许是它们对代码的含义。这在 JS 中是不准确的,因为您可以在运行时向 JS 中的类型添加或删除成员。所以你最终可以得到完全不同的类型。例如,您可能有一个具有 1 个属性的类型。然后,您可以在代码中添加一个 for 循环,添加与迭代一样多的属性(user1、user2 等)。因此,您最终会得到 Company.User1、Company.User2 等,而您的开头是:
  • var Company = {}所以在 JS 中没有 100% 准确的分析。
  • 运行时分析 - 这或多或少是浏览器用来在代码执行时判断变量类型的真正方法(因为你不知道 JS)。这是在代码执行时完成的。

  • 除非您达到第 3 级(运行时分析),否则使用 JS - 不能保证您是正确的。大多数编辑器会部分使用某种语法分析、某种语义分析和(也许)只是一点运行时分析,以尝试使结果更准确。但它们永远不会是准确的。
    如果你确定这是什么。应该是 - 您可以通过附加完成提供程序在 monaco 编辑器中提供自己的自动完成项:
    https://microsoft.github.io/monaco-editor/api/interfaces/monaco.languages.completionitemprovider.html

    关于javascript - 在 Monaco Editor for javascript 上设置 "this"上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48793180/

    相关文章:

    javascript - 检测浏览器滚动

    javascript - 如何更改物化中的标题颜色?

    javascript - 来自函数参数的动态 Typescript 对象属性

    JavaScript setInterval 和 `this` 解决方案

    monaco-editor - Monaco Editor 'onChange' 事件?

    monaco-editor - 如何使用 Javascript 删除 Monaco Editor 的自动完成功能?

    javascript - 在 Javascript 中将带引号的变量添加到字符串中

    scala - 在Scala中使用self别名=>

    c++ - 指针或引用

    javascript - Monaco 编辑器依赖问题