伴随着ES6的发布,javascript中正式的引入了class(类),让js中的面向对象更加的规范标准,同时给想跨语言发展的前端同学们提供了更高的台阶,因为,后端语言的OOP也是class,语法基本一致呀!惊不惊喜
今天我们就来撩一把class中的static关键字,咳咳…拿出你的小马扎,和笔记本开始了…
前情回顾
想必各位前端的小伙伴们都知道,一般来书在class中只有属性和方法.都可以被实例化的对象进行调用,比如这样的.

 // 声明类class Boy {//定义属性info = '见过你的美,还能爱上谁?';// 定义方法say() {console.log('小姐姐,' + this.info);
​}}// 实例化类let b = new Boy;// 成功调用方法b.say();

结果

当我们再次声明一个使用static修饰的方法,使用实例化对象之后,你会发现

 // 声明类class Boy {//定义属性info = '见过你的美,还能爱上谁?';// 定义方法say() {console.log('小姐姐,' + this.info);
​}// static 修饰的方法static desc() {console.log('小姐姐,我看见你就犯困...');
​}}// 实例化类let b = new Boy;// 成功调用方法//b.say();// 调用static修饰的方法b.desc();
​

代码竟然报错了!!!这个方法不能被实例化后的对象调用
不要着急,来来让我们一起揭开static神秘的面纱
敲黑板了,凡是被static修饰的属性和方法都是静态方法和属性,只能被类名调用,不能被实例化对象调用.同时也不能被子类继承,换句话说它属于当前这个类的.

基本使用
使用static修饰属性和方法

   class A {// 静态属性static info = '见过你的美,还能爱上谁?';// 静态方法static love() {console.log('小姐姐,看见你就犯困,为情所困,为你所困!');
​}}// 直接使用类名调用console.log(A.info);A.love();

结果

在普通的方法中使用,静态属性和静态方法,也必修使用类名进行调用

class A {// 静态属性static info = '见过你的美,还能爱上谁?';// 静态方法static love() {console.log('小姐姐,看见你就犯困,为情所困,为你所困!');
​}// 普通方法,调用静态属性say() {console.log('小姐姐,' + A.info);
​}}


也可以在普通方法中修改静态属性的值,使用类名直接调用即可

能被继承
extends的主要用于子类继承父类,继承之后子类拥有父类的的所有方法包括,静态方法和属性除外.

class A {// 静态属性static info = '见过你的美,还能爱上谁?';// 静态方法static love() {console.log('小姐姐,看见你就犯困,为情所困,为你所困!');
​}// 普通方法,调用静态属性say() {console.log('小姐姐,' + A.info);
​}}class B extends A {run() {console.log('类B的方法..');}}//使用类名 父类中普通方法调用B.love();


注意点
如果静态方法包含this关键字,这个this指的是类,而不是实例。

    class A {// 静态属性static info = '见过你的美,还能爱上谁?';// 静态方法static love() {//  console.log('小姐姐,看见你就犯困,为情所困,为你所困!');console.log(this);// 静态类中调用普通方法this.say();}// 普通方法,调用静态属性say() {console.log('小姐姐,' + A.info);}}A.love();


分析:
上面代码中,静态方法love调用了this.say(),这里的this指的是A类,而不是A的实例,等同于调用A.say()。
静态方法和普通方法是可以重名的,因为他们不属于同一个对象,像这样!

 class A {// 静态属性static info = '见过你的美,还能爱上谁?';// 静态方法static love() {console.log('小姐姐,看见你就犯困,为情所困,为你所困!');//  console.log(this);
​}// 普通方法,lovelove() {console.log('我是普通方法....');
​}// 普通方法,调用静态属性say() {console.log('小姐姐,' + A.info);
​}
​
​}// 静态的love方法A.love();// 实例化类let a1 = new A;
// 普通的love方法a1.love();

ES6中static关键字使用相关推荐

  1. C++中 static 关键字的作用

    C++中 static 关键字的作用 对于函数定义和代码块之外的变量声明,static 修改标识符的链接属性,由默 认的 external 变为 internal,作用域和存储类型不改变,这些符号只能 ...

  2. php 中的作用是什么,php中static关键字的作用是什么

    php中static关键字的作用是:1.放在函数内部修饰变量,函数执行完后变量值仍然保存:2.放在类中修饰属性或方法,如果修饰的是类的属性,则保留值:3.放在类的方法中修饰变量:4.修饰全局作用域的变 ...

  3. C/C++中static关键字的作用

    在C语言中static的作用如下 第一.在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放.  第二.static修饰全局变量的时候, ...

  4. java中static类的作用是什么意思_java中static关键字是什么意思

    java中static关键字是什么意思 发布时间:2020-11-11 11:01:11 来源:亿速云 阅读:86 作者:小新 这篇文章给大家分享的是有关java中static关键字是什么意思的内容. ...

  5. c语言中关键字static_了解C ++中Static关键字的变体

    c语言中关键字static Hello, folks! Today we will be unveiling another important aspect in the series of our ...

  6. Java中static关键字的作用与用法

    一.static关键字的特点: static是一个修饰符,用于修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能. 1. static修饰成员方法 static修饰的方法一般 ...

  7. C++中static关键字用法

    原文参考:https://zhuanlan.zhihu.com/p/347930016 1.面向过程设计中的static 1.1静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一 ...

  8. C/C++中static关键字详解

    其实只有一句话需要注意: static在类外初始化,然后才可以在类内修改,其生命周期就是整个程序的生命周期.  静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时 ...

  9. java 中static 关键字的用法全解

    static 修饰 字段 或方法,称为静态字段或静态方法. 静态方法不通过对象调用.静态字段属于类,不属于类中的任何对象. main 方法为什么是静态的.程序开始时,没有任何对象,因此,程序的第一种方 ...

最新文章

  1. matlab怎么求残余误差,误差理论与数据处理实验报告.doc
  2. 2021年春季学期-信号与系统-第十二次作业参考答案-第六小题
  3. 在Matlab中使用mex函数进行C/C++混合编程
  4. mysql with ties_MySQL令人咋舌的隐式转换
  5. 基于EasyDarwin实现幼儿园监控类项目
  6. 深度学习之PyTorch物体检测实战——新书赠送活动
  7. python怎么退出全屏_wxPython:退出全屏
  8. Mac效率神器Alfred系列教程---剪切板历史记录
  9. 关于SVN限制填写备注和自动更新代码到网站的研究
  10. java抽奖代码_纯java代码实现抽奖系统
  11. 德勤咨询:2021年度企业人工智能应用现状报告(第4版)
  12. hihoCoder 1096 Divided Product 微软苏州校招笔试 12月27日
  13. html让方块往下移动,CSS3 方块上下交换和旋转动画
  14. python3.x安装HTMLTestRunner和使用
  15. 小米路由器探测和测评本人亲测
  16. neo4j,MongoDB
  17. python爬实时数据_如何用python爬取实时更新的动态数据?
  18. 【Android】SerialPortFinder学习笔记,显示串口列表
  19. 开篇之作之——阅读与思考
  20. IDEA+Java+JSP+Mysql+Tomcat实现Web商品信息管理系统

热门文章

  1. 交付dubbo服务到k8s
  2. phpyun操作数据库
  3. 女人科学生活24小时
  4. MS5351M时钟发生器芯片兼容SI5351-datdsheet
  5. JavaScript Study
  6. 羽毛球拍怎么选?如何挑选适合自己的羽毛球拍?
  7. 2013年嵌入式软件开发工程师的薪资水平调查
  8. Android系统的版本
  9. 北伐日记 Vol.17-治病救人
  10. Python判断能否组成三角形