【问题标题】:Storing child class as variable in Javascript在Javascript中将子类存储为变量
【发布时间】:2019-09-18 11:45:18
【问题描述】:

我有这样的声明。

let Polygon = class{
  constructor(){
    //stuff
  }
  
  draw(){
    //more stuff
  }
}

我想这样扩展这个类:

class Board extends Polygon{
  constructor(){
    //stuff
  }
}

但我也想将它存储为像 Polygon 这样的变量。使用这个:

let Board = class extends Polygon{

}

不起作用。如何像使用 Polygon 一样存储它?

【问题讨论】:

  • 您使用的是哪个浏览器?您的最后一个 sn-p 对我来说没有问题(Chrome/Mac 76)。
  • 你为什么要那样做而不是class Board extends Polygon { }?你可以,但我很好奇你为什么要使用let

标签: javascript class inheritance


【解决方案1】:

它工作得很好(但请继续阅读):

let Polygon = class{
  constructor(){
    //stuff
  }
  
  draw(){
    //more stuff
  }
};

let Board = class extends Polygon {

};

console.log(typeof Board);

...但请注意

let Board = class extends Polygon {

};

class Board extends Polygon {

}

完全做同样的事情。他们俩:

  • 在进入上述发生的范围时,使用现代标识符范围和语义(例如,使用临时死区等)在当前执行上下文中创建一个名为 Board 的可变变量。 letconstclass 都使用现代标识符语义。 (var 使用旧的范围和语义。)
  • 当在代码的逐步执行中达到该语句/声明时,使用由class 构造函数创建的构造函数初始化该变量到Board

(相比之下,const Board = class extends Polygon { }; 使标识符绑定不可变。)

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 2014-08-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多