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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (66)

我正在接触新的JS类,所以我开始在这里看一些例子:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

我去了chrome 开发人员工具控制台,我编写了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中有一个新的范围定义,而且类自动地使用新的作用域等等.但实际上,我如何重新定义我的类?

提问于
用户回答回答于

我在Chrome的版本54.0.2840.71(64位)上,虽然我可以打开控制台并声明一个新类,但我不能重新定义一个类(你会得到错误:VM272:1 Uncaught SyntaxError: Identifier 'Thing' has already been declared,因为我试图重新定义我的类Thing)

如果以后只想将方法添加到类中,则可以将它们添加到类的prototype:

Polygon.prototype.area = function() {
  // do some stuff
}

在这种情况下,然而,它不会是一个getter方法,如你的示例中所示。

编辑

为了避免语法错误,如果你只是将一个类重新分配为一个变量,它应该做你想做的事情:

// in your original code

var Polygon = class{}

// in the console

var Polygon = class {
  // with new stuff
}
用户回答回答于

块范围(letconstclass)不能重新声明。

类表达式var可用于在控制台中重用和重新声明变量:

var Polygon = class Polygon  { ... };
new Polygon();
var Polygon = class Polygon  { ... };
new Polygon();

所属标签

可能回答问题的人

  • 学生

    3 粉丝476 提问7 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • 最爱开车啦

    8 粉丝503 提问5 回答
  • 骑牛看晨曦

    4 粉丝522 提问5 回答

扫码关注云+社区

领取腾讯云代金券