【问题标题】:Eclipse Javascript 'Class' OutlineEclipse Javascript“类”大纲
【发布时间】:2017-07-20 18:44:15
【问题描述】:

使用在 OSX 上运行的 Eclipse Oxygen。 我有几个文件,其对象结构以标准方式使用原型模仿类:

function MyClass(args) {
  this.testconstant = 'ctrl';
  MyClass.prototype.start = function () {//initialises BaseCtrl - child objects must also call their own boot
  }  
}

然而 Eclipse 只是将大纲显示为:

o MyClass(args)

是否有插件或其他东西可以解决这个问题 - 这似乎是一个长期存在的问题,但仍未解决。我已经设置为一个新的 Javascript 项目。

【问题讨论】:

  • 它必须执行代码才能弄清楚它在做什么。 JavaScript 并没有像其他语言那样真正拥有“类”;这确实是一个独特的概念。
  • 当然,因此我引用类这个词来表明它不是真的。我知道它在概念上非常不同,但它的结构在代码中的工作方式非常相似,然后使用它。我看不出它为什么需要执行任何事情。事实上,Netbeans 等其他 IDE 也显示了这种结构。
  • 嗯,它可以猜测,但是构造函数可以调用其他函数并真正做任何事情。弄清楚生成的对象 真正 是什么样子需要执行对构造函数的调用(以某种方式猜测要传递的参数,另一个难题)或至少一个体面的静态分析(这基本上是“猜测”)。现在,如果你使用 ES2015 class 语法,Eclipse 可能会理解。
  • ES2015 看起来很有前途,并且语法更好,更清晰易读。正如您所建议的那样,它也可以在 Eclipse 中更好地分解为我所需要的。我需要做一些测试,但请在我做的时候更改你评论的答案

标签: javascript eclipse outline


【解决方案1】:

在我看来,IDE 确实无法准确地告诉您“类”中的对象在 JavaScript 中的样子,因为实际上不存在“类”这样的东西。对象是由代码动态构建的,它是绝对可以做任何事情的代码。例如,它可以在每次调用时随机创建一个具有随机命名属性的对象。这听起来有些做作,但这样的事情可能对某些人有用,因为它具有灵活性。

一个不太人为的例子是一个接受一些参数的构造函数,这些参数的值决定了在构造对象上初始化哪些属性。

因此,要真正做到正确,IDE 必须执行构造函数代码,并且必须知道要传递哪些参数,并且必须以某种方式处理单个构造函数可以构造无限的事实各种不同“形状”的物体。因此,实际上,它所能做的最好的事情就是向您展示原型对象上的内容。

现在,在 ES2015 中,class 声明语法为混乱带来了一点秩序,IDE 可以轻松地利用它来增强编辑体验。与仅仅弄清楚原型的外观没有太大不同,但可能会更容易一些,因为原型来自哪里的问题也非常开放。

请注意,我不知道 Eclipse 或任何其他 IDE 是如何处理这个问题的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    相关资源
    最近更新 更多