首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在控制台中重新定义JavaScript (不是CSS)类?

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

Stack Overflow用户
提问于 2016-11-08 01:26:56
回答 2查看 3K关注 0票数 5

我是JS类的新手,主要从事后端工作。

我正在尝试新的JS类,所以我开始学习这里的示例:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

我转到chrome (Chrome)开发人员工具控制台,编写了Polygon类:

代码语言:javascript
复制
class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}

然后,我想根据包含方法的示例重新定义类,所以我写道:

代码语言:javascript
复制
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中有一个新的作用域,类会自动使用新的作用域等等……但实际上,我该如何重新定义我的类呢?

我通常编写Python,所以我习惯于能够重新定义任何我想要的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-19 05:23:54

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

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

代码语言:javascript
复制
class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}

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

因此,如果您需要在JS控制台中进行实验,只需执行以下操作:

代码语言:javascript
复制
Polygon = class {
  //... new stuff here
}

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

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

票数 9
EN

Stack Overflow用户

发布于 2016-11-08 01:38:51

不能重新声明块作用域声明(letconstclass)。

Class expressionvar可用于在控制台中重用和重新声明变量:

代码语言:javascript
复制
var Polygon = class Polygon  { ... };
new Polygon();
var Polygon = class Polygon  { ... };
new Polygon();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40471017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档