博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
es6中class类的全方面理解(三)------静态方法
阅读量:6720 次
发布时间:2019-06-25

本文共 1269 字,大约阅读时间需要 4 分钟。

不需要实例化类,即可直接通过该类来调用的方法,即称之为“静态方法”。将类中的方法设为静态方法也很简单,在方法前加上static关键字即可。这样该方法就不会被实例继承!

class Box{    static a(){        return "我是Box类中的,实例方法,无须实例化,可直接调用!"    }}//通过类名直接调用console.log(Box.a());//我是Box类中的,实例方法,无须实例化,可直接调用!

上面的代码一,类Box的a方法前有static关键字, 表明该方法是一个静态方法, 可以直接在Box类上调用。静态方法只能在静态方法中调用,不能在实例方法中调用。

class Box{    static a(){        return "我只允许被静态方法调用哦!"    }    static b(){        //通过静态方法b来调用静态方法a        console.log(this.a());    }}Box.b();//输出:我只允许被静态方法调用 哦

通过实例方法来调静态方法会报错:

class Box{    static a(){        return "我只允许被静态方法调用哦!"    }    b(){        console.log(this.a());//TypeError: this.a is not a function    }}var obj=new Box();obj.b();

父类的静态方法, 可以被子类继承:

class Box {    static a() {
//父类Box的静态方法 return '我是父类的静态方法a'; }}class Desk extends Box {}//子类Desk可以直接调用父类的静态方法aconsole.log(Desk.a());

倘若想通过子类的静态方法调用父类的静态方法,需要从super对象上调用:

class Box {    static a() {        return '我是通过super来调取出来的';    }}class Desk extends Box {    static a(){        return super.a();    }}console.log(Desk.a());
静态属性

静态属性指的是 Class 本身的属性, 即Class.propname, 而不是定义在实例对象( this) 上的属性。

class Box{   constructor(){       this.name="实例属性"   }}Box.prop1="静态属性1";Box.prop2="静态属性2";console.log(Box.prop1,Box.prop2);//静态属性1  静态属性2

 

转载于:https://www.cnblogs.com/catbrother/p/9397193.html

你可能感兴趣的文章
CACTI故障小记
查看>>
小脚本
查看>>
springboot 小结
查看>>
jfinal 关于设置特定的一个session的过期时间
查看>>
c++primer笔记--chapter one
查看>>
perl closure object闭包和对象
查看>>
《敏捷迭×××发管理者指南》读书笔记(0)
查看>>
Nginx 动态负载 upstream 三种方案
查看>>
数据采集(二)
查看>>
随笔20140306
查看>>
Go 源码阅读笔记 text/template/exec
查看>>
Linux一些命令
查看>>
OE1、OE2、ON1、ON2路由区别
查看>>
css选择器
查看>>
语法:MySQL中replace into SELECT的使用
查看>>
我的友情链接
查看>>
Spring核心——Bean的定义与控制
查看>>
企业开发珠玑--给新手管理的建议
查看>>
MySQL 数据库主从复制架构
查看>>
老李分享:https协议 2
查看>>