当前位置: 首页 > 面试题库 >

为什么不悬挂ES6类?

拓拔欣嘉
2023-03-14
问题内容

由于ES6类仅仅是 avaScript现有的基于原型的继承 的 _语法[[1]],因此(IMO)可以合理地定义它:

var foo = new Foo(1, 2); //this works

function Foo(x, y) {
   this.x = x;
   this.y = y;
}

但是以下操作无效:

var foo = new Foo(1, 2); //ReferenceError

class Foo {
   constructor(x, y) {
      this.x = x;
      this.y = y;
   }
}

为什么不悬挂ES6类?


问题答案:

为什么不悬挂ES6类?

其实他们 _都_悬挂(变量绑定在整个范围内都有效),就像letconst是他们只未初始化。

提升其定义很有意义

不。在定义类之前使用类绝不是一个好主意。考虑例子

var foo = new Bar(); // this appears to work
console.log(foo.x)   // but doesn't

function Bar(x) {
    this.x = x || Bar.defaultX;
}
Bar.defaultX = 0;

比较一下

var foo = new Bar(); // ReferenceError
console.log(foo.x);

class Bar {
    constructor (x = Bar.defaultX) {
        this.x = x;
    }
}
Bar.defaultX = 0;

如您所料,这会引发错误。这是静态属性,原型混合,装饰器和其他所有问题。对于子类来说,这也是非常重要的,当您将类与未经调整的原型一起使用时,子类在ES5中完全中断,但是如果extend尚未初始化ed类,则现在会引发错误。



 类似资料:
  • 问题内容: 我正在尝试与大学的MySQL数据库建立连接,但该连接已挂起。 此调用:打印(在我最终杀死它之后): 我刚刚从下载的MySQL连接器/ J 这里。我不确定这是否是问题的一部分。我非常准确地遵循了指示。 我也可以像这样在命令行上连接到mysql: 可能的问题: 我写的Java代码 我如何安装MySQL Connector / J 某种网络问题阻止了连接 问题: 我应该怎么解决这个问题?为什

  • 问题内容: 我可以成功运行容器: 但是执行挂起: 直到我按任意键,例如: 为什么挂? 更新 : 阅读评论后,我想我会得到答案: 先决条件: “ docker attach”重用相同的tty,而不打开新的tty。 (1)执行无守护程序模式: 一切正常,然后运行命令: (2)在守护程序模式下运行: 实际上, 以下内容应该已经从正在运行的容器输出到stdout: 因此执行似乎挂起,但实际上它正在等待您的

  • Rest服务器(Play Framework)中的相关问题在负载测试期间出现“读取超时”异常 java版本“1.8.0_31”java(TM)SE运行时环境(Build1.8.0_31-B13)java HotSpot(TM)64位服务器VM(Build25.31-B07,混合模式) 我正在我的本地PC中测试jmeter。我使用了2000个线程,出现了超时异常,并且Socket不知为什么没有关闭。

  • 问题内容: 想要改善此职位? 提供有关此问题的详细答案,包括引文和为什么您的答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我在Arch Linux,i7-5930k 6核心CPU和64GB DDR4 RAM上运行,并且正在使用IntelliJ IDEA 14。 几天前,IDEA对我来说还算不错,但是有一天,突然间,它在“索引”阶段打开项目后就开始挂起。我没有更新IDEA,并且我的项目没有

  • 我正在尝试使用Firebase身份验证实现Apple登录。我正在遵循Firebase/快速入门-android示例。 我的登录片段会覆盖,以检查任何挂起的结果: 以及启动登录流程的按钮: viewModel从存储库调用以下方法: 官方手册规定: 使用此方法登录会将您的活动置于后台,这意味着系统可以在登录流程中回收活动。 所以我开始测试挂起的结果,方法是在Android Studio中终止应用程序,

  • 我在micronaut(服务A)中实现了一些RESTendpoint。其中一个endpoint使用。服务X的响应时间可能较长,例如分钟。一旦这个呼叫进行中,我会定期呼叫服务A(来自curl),每隔一段时间它就会挂起。 我试着用curl调用我的服务。在我看来,一旦服务A调用服务X,它就会持有一个线程,等待阻塞操作完成。为endpoint提供服务的后续调用将由不同的线程以循环方式处理。但是,一旦阻塞发