伴随着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. 009-回归测试的测试范围是什么?
  2. 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)
  3. 使用 json_serializable (flutter packages pub run build_runner build) 问题
  4. 初探EntityFramework——空EF设计器模型
  5. 12306 回应软件崩了;微信发布新版本,朋友圈可“斗图”;Ant Design 3.26.4 发布 | 极客头条...
  6. HDU1642 UVA167 UVALive5227 The Sultan's Successors题解
  7. Keil MDK浮点数支持不正常的解决方案
  8. magisk下载里显示没有模块_magisk框架
  9. 基于51单片机的智能温控风扇
  10. Oracle 删除归档
  11. Ps制作食物网站展示
  12. Microsoft Virtual WiFi Miniport Adapter 使用方法
  13. Python spiders基础学习笔记
  14. 内网渗透之Socks代理简介
  15. HTTP协议 --HTTP协议详解
  16. 求一颗二叉排序树查找成功和失败情况下的平均查找长度
  17. 小市值(股票)——Python量化
  18. react-native 获取手机imei码
  19. Hbuilder无法完成应用程序云打包,一直报错需要打包校验
  20. 零基础如何学习PS怎样自学PS

热门文章

  1. CoreBluetooth.framework基本使用
  2. 短信 点击发送后产生的短信信息显示字体颜色修改
  3. System.Exception:System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本
  4. tcp灌包来包不够_LTE-UDPTCP的上行下行灌包操作指导书.doc
  5. Android 常用开发功能 博客导航
  6. 2019寒假作业2 编程总结
  7. mgc token白皮书
  8. PM_14 项目文档管理与配置管理
  9. B. Restoring Painting CodeForces - 675B
  10. 蓝桥杯 无聊的逗 C++