ES6中类的静态方法static 的使用?

作者站长头像
站长
· 阅读数 15

ES6中新增了static关键字,static方法不能被实例继承,只能通过类来调用

class Super{
    static test(){
        console.log('Super test');
    }
}

let sub = new Super;
sub.test() // error
Super.test()

但是子类可以通过extends来继承父类中的方法

class Super{
    static test(){
        console.log('Super test');
    }
}

// let sub = new Super;
// sub.test() // error
// Super.test()

class sub extends Super{

}
sub.test()

我想知道ES6中为什么会引入static关键字,他们有什么应用场景?原型,静态,实例上的方法会有什么不同?希望大佬解答一下哇,感谢!!!

回复
1个回答
avatar
test
2024-07-16
亲, 我们这边建议把这本 ES6入门教程 翻烂。

Class的基本语法 章节的 8.静态方法 以及 9.静态属性 部分 阮一峰大佬说的算比较详细了。

总的来说就是按照传统来说定义静态方法主要是规避两个模块调用同名函数的情况。

同时只需要通过 类名.静态方法名 就可以访问,不需要创建实例对象去使用,带来便利的同时还能够提升性能(同一块内存)。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容