zoukankan      html  css  js  c++  java
  • ES6——静态属性与静态方法

    静态方法只能写在class内,constructor外。通过static关键字声明

    静态属性只能写在class外,通过 类名.属性名 = 属性值 声明

                //静态属性与静态方法(ES6明确规定,Class内部只有静态方法,没有静态属性 )
                
                //1.不会被类实例所拥有的属性与方法,只是类自身拥有
                //2.只能通过类调用
                
                //通过static关键字声明一个静态方法
                
                class Car{
                    constructor(){
                        Car.totalCar += 1;
                        this.speed = 0;
                    }
                    
                    speedUp(){
                        this.speed += 1;
                    }
                    
                    static repair(car){
                        if(!car.speed){
                            car.speed = 0;
                        }
                        
                        console.log(car);
                    }
                }
                
                //静态方法只能通过类去访问,不能通过实例去访问的
                Car.repair({
                    color:'#f00'
                });
                //静态方法跟普通方法可以重名
                
                
                //静态属性只能通过 类名.属性名 = 属性值;
                //静态属性可以增加一些配置项等等
                Car.totalCar = 0;  //记录生成了多少个Car对象
                //直接挂在类上面,跟程序的耦合性降低
                Car.config = {
                    wheel:4,
                    color:'#000'
                }
                
                
                
                
                //直接方法静态属性: 类名.属性名
                new Car()
                console.log(Car.totalCar);
                

    应用:

                //静态属性经常这样使用,把各个类相关的内容全部挂到静态属性上面,方便取值
                class Profession{
                    
                }
                
                class Character{
                    constructor(pfs){
                        this.pfs = pfs;
                    }
                }
                
                Character.config = {
                    profession:{
                        '咒术师':1,
                        '弓箭手':2
                    }
                }
                
                new Character(Character.config.profession['咒术师'])
                
                
                
                //静态方法的应用:一般会提供一个公共的类相关的方法
                //比如把一个程序员类转换成一个普通人的类
                class Person{
                    static format(programmer){
                        programmer.haveGirlFriend = true;
                        programmer.hair = true;
                    }
                }
                
                class Programmer{
                    constructor(){
                        this.haveGirlFriend = false;
                        this.hair = false;
                    }
                }
                
                const programmer = new Programmer();
                
                console.log(programmer);
                
                Person.format(programmer);
                
                console.log(programmer);
                
  • 相关阅读:
    java基础学习总结——方法的重载(overload)
    java基础学习总结——哈希编码
    HDFS常用命令总结
    统计列表中有重复的元素
    url编解码
    python读取文件指定行内容
    python对接elasticsearch的基本操作
    爬虫速度太慢?来试试用异步协程提速吧!
    Python多线程的事件监控
    Python只有文件不存在才能写文件
  • 原文地址:https://www.cnblogs.com/rickdiculous/p/13670315.html
Copyright © 2011-2022 走看看