javascript - 如何在控制台中重新定义 JavaScript(不是 CSS)类?

标签 javascript class ecmascript-6 es6-class

我对 JS 类相当陌生,并且主要从事后端工作。

我在玩新的 JS 类,所以我开始在这里查看示例:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

我去了 chrome (chromium) 开发者工具控制台,我写了 Polygon 类:

class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}

然后我想根据包含方法的示例重新定义类,所以我写道:
class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }

  get area() {
    return this.calcArea();
  }

  calcArea() {
    return this.height * this.width;
  }
}

这会引发错误:Uncaught SyntaxError: Identifier 'Polygon' has already been declared(…)
现在我知道 ES6 中有一个新的作用域,并且类会自动使用新的作用域等等……但实际上,我该如何重新定义我的类? :D

我经常写 Python,所以我习惯于重新定义我想要的一切。

最佳答案

没有一个答案在不更改原始代码的情况下提供解决方案......所以这里是精炼的解决方案。

如果在代码中你有这样的东西:

class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}

那么这意味着你已经创建了一个 let名为 Polygon 的变量.您不能重新声明 Polygon ,但您可以重新分配它。

因此,如果您需要进行实验,例如JS 控制台只做:
Polygon = class {
  //... new stuff here
}

这将替换原来的类,但不会违反 let限制。

您可以通过在控制台中粘贴以上代码来尝试此操作,然后尝试 new Polygon(1,2) .

关于javascript - 如何在控制台中重新定义 JavaScript(不是 CSS)类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40471017/

相关文章:

javascript - node cron 在启动时自动运行

javascript - Highchart 漏斗可视化的标签

javascript - wasm可以使用sysinfo依赖项吗?

javascript - 通过 Ajax 加载的内容会破坏按钮

c++ - 为什么我们需要将函数声明复制并粘贴到继承的类头中

java.lang.ClassFormat错误: Incompatible magic value 218774561

php - 为什么我应该使用类而不是函数的集合?

Javascript子类方法不覆盖父类方法

javascript - React Native 组件未在 map() 迭代器内渲染

javascript - 调试时在 Vue-CLI 应用程序中禁用转译为 ES5