从常规 ES6 类方法调用静态方法

2024-02-10

调用静态方法的标准方法是什么?我可以考虑使用constructor或者使用类本身的名称,我不喜欢后者,因为它感觉没有必要。前者是推荐的方式,还是还有其他方式?

这是一个(人为的)示例:

class SomeObject {
  constructor(n){
    this.n = n;
  }

  static print(n){
    console.log(n);
  }

  printN(){
    this.constructor.print(this.n);
  }
}

两种方法都是可行的,但是在使用重写的静态方法进行继承时,它们会做不同的事情。选择您期望其行为的人:

class Super {
  static whoami() {
    return "Super";
  }
  lognameA() {
    console.log(Super.whoami());
  }
  lognameB() {
    console.log(this.constructor.whoami());
  }
}
class Sub extends Super {
  static whoami() {
    return "Sub";
  }
}
new Sub().lognameA(); // Super
new Sub().lognameB(); // Sub

通过类引用静态属性实际上是静态的,并且不断给出相同的值。使用this.constructor相反,将使用动态调度并引用当前实例的类,其中静态属性might具有继承的值,但也可以被覆盖。

这与 Python 的行为相匹配,您可以选择通过类名或实例来引用静态属性self.

如果您希望静态属性不被覆盖(并且始终引用当前类的属性),就像在Java中一样 https://stackoverflow.com/q/2223386/1048572,使用显式引用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从常规 ES6 类方法调用静态方法 的相关文章

随机推荐

  • TextInputEditText:ArgumentNullException:MvxWeakEventSubscription 中缺少源事件信息

    突然 我的 TextInputEditText 的绑定开始失败 这与链接器有关 如果我将链接器设置为 无 则一切都会按预期进行 我使用的许多其他绑定仍然可以正常工作 我得到的堆栈 视图绑定期间抛出异常 ArgumentNullExcepti
  • 在背景中捕捉图像?

    我试图在不加载相机或预览界面的情况下从相机捕获背景图像 在我的应用程序中 照片是在后台拍摄的 没有预览屏幕 只有普通的应用程序屏幕 然后稍后显示给用户 有人可以指出我正确的方向吗 您必须使用 AVCaptureSession 和 AVCap
  • 访问 RadioButton 并在 Espresso 中选择它

    我正在使用 Espresso 来测试 Android 应用程序 我在尝试找到一种方法来访问和选择当前活动的RadioButton 属于RadioGroup 时遇到麻烦 有没有人有什么建议 给出以下布局
  • 如何处理 mod_rewrite 中查询字符串中的“#”?

    I asked 这个问题 https stackoverflow com questions 1640977 how to redirect old ugly urls to seo friendly ones关于将旧的 丑陋 链接重写为搜
  • Java Servlet/Jsp 图像上传以及表单值[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个 jsp 表单 它接受有关员
  • 全局变量没有全局作用域

    supposedlyGlobalVariable blah ARoutine localVariable asdf MsgBox The global variable value is supposedlyGlobalVariable T
  • 访问 Bamboo 秘密/密码变量?

    我的团队有一些旧的竹子管道 其中秘密和密码在竹子变量中配置 并用竹子掩盖这些值 现在没有人知道密码 也没有记录下来 有什么方法可以访问 打印并查看bamboo 秘密 密码 变量中的值吗 读取秘密变量有一个技巧 创建包含内容的脚本任务 ech
  • 按条件对行进行分组

    我有这个数据 Start End Quantity 425 449 24 450 474 24 475 499 24 500 524 24 2300 2324 24 2400 2499 99 2500 2599 99 2800 2899 9
  • Mongoose:将 addToSet 与 ObjectIds 一起使用会产生孤立 ID

    我在使用 mongoDB addToSet 到一个充满对象 Id 的数组时遇到了一个相当有趣的问题 在我的猫鼬模式 Happening 中 我声明了一个名为 expected 的 ObjecId 数组 供 populate 使用 expec
  • 在 .Net Core 3.1 中使用 NewtonSoft 将 DataTable 转换为 JSON 字符串时,如何获得不带“\u0022”或“\”等字符的 JSON 字符串[重复]

    这个问题在这里已经有答案了 我正在 net core 3 1 中编写一个简单的 API 要将我的 DataTable 转换为 JSON 字符串 我使用 NewtonSoft 库和以下代码 string JSONresult JsonConv
  • 保护 JavaScript Web 应用程序/游戏的方法有哪些?

    背景故事 我计划实现一款休闲游戏 部署在网络应用程序中 但我不想使用 Flash 而只是使用普通的 Javascript 我想要的 Flash 的一个好处是 它分发二进制文件而不是源代码 因此更容易保护您的代码不被其他人重用 窃取 或者防止
  • 如何用 Python 编写 Web 代理

    我正在尝试用 python 编写一个网络代理 目标是访问如下网址 http proxyurl http anothersite com 并查看内容http anothersite com就像平常一样 通过滥用 requests 库 我已经取
  • Excel 一组选项中的随机数

    在 MS Excel 中 如何随机计算一组 5 个选项中的一个数字 例如 在单元格 B1 中 我想要一个随机数 即 15 30 50 75 或 100 我想要在单元格 B1 B100 中完全随机输出这 5 个数字 我想我可以使用 rand
  • Curl 只能读取前 2000 个字节吗?

    我使用了 char URL file d temporal prueba1 txt 的curl 来测试使用硬盘驱动器文件来测试接收到的数据 我有以下问题 跳过大文件中的前 2 个字符 已解决 读取数据时出错 我只想只读一次 最好是前 200
  • 通过命令行在 Chrome 中打开网址而不使用缓存

    我使用命令chrome new window htp www example com 打开一个 url 但页面是使用上次保存在缓存中的打开的 有没有办法从命令行打开 URL 强制加载而忽略缓存 Thanks 尝试以下命令 usr bin g
  • 如何从业务/模型类发送进度更新?

    假设我们有一个具有分层架构的应用程序 在视图上我们使用 MVC 或 MVVM 模型被视为域 它有很好的业务逻辑部分 现在假设我们在模型中有一个需要一些时间的方法 例如 必须对对象的每个项目进行复杂的计算或处理 在 UI 中 我们希望显示一个
  • 在 Google Colab 上训练模型时,我应该保持连接吗?

    在 Google Colab 上训练用于对象检测的数据集模型 Darknet 时 我是否需要保持与 Colab 和互联网的连接 当训练在 Colab 上进行并连接到我的驱动器时 这里的权重文件将保存在我的谷歌驱动器文件夹中 那么 我可以断开
  • R中的参数传递机制

    下面的函数用于将一个序列相乘1 x by y f1 lt function x y return lapply 1 x function a b b a b y 好像a用于表示序列中的元素1 x 但是不知道如何理解这个参数传递机制 在其他
  • java.io.File 中 mkdir() 和 mkdirs() 之间的区别

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 谁能告诉我这两种方法之间的区别 file mkdir file mkdirs mkdirs 还创造了父目录在这个路径中File代表 jav
  • 从常规 ES6 类方法调用静态方法

    调用静态方法的标准方法是什么 我可以考虑使用constructor或者使用类本身的名称 我不喜欢后者 因为它感觉没有必要 前者是推荐的方式 还是还有其他方式 这是一个 人为的 示例 class SomeObject constructor