JavaScript中のes 6のクラスとクラスの継承(二)


クラスでよく使われるキーワード
  • static
  • get
  • set
  • staticキーワード
    staticは、純粋な静的方法であり、クラスのキーワードによってしかこの方法の位置にアクセスできない.
    class Methods {
        constructor(){
            this.handleChange = this.handleChange();  //   Methods
            console.log(this.printName()); //Jack
            console.log(Methods.Jack); //Jack
            console.log(this.Jack);  //undefined
        
            //this----     ↑↑↑    Methods----  ↑↑↑
        }
        handleChange(){
            return Methods.FunName;
        }
        
        printName = (name = Methods.Jack) => {  //       ‘Jack’
            return name;
        };
        static FunName(){
            console.log(this);  //  console.log(this),            Methods      
            console.log(typeof this);  //    :object      function
            return 'handleChange';
        }
        static get Jack(){  //        Method   
            return 'Jack'
        }
    }
    
    const methods = new Methods();
    console.log(methods.handleChange() === Methods.FunName());  //true
    console.log(Methods.FunName);  //         function           
    console.log(methods.FunName);  // undefined
    
    
    getとset
    Object.definedProtyの中のgetあるいはsetと最大の違いはgetがreturnを必要として、setの中のreturnは無効です.
    let str = 'nihao';
    function block() {
        class MyClass {
            constructor() {
            }
            get prop() {
                return 'nihao';
            }
            set prop(value) {   //value          
                console.log(value);
                // this.prop = value;                  
                str = value;
            }
        }
        
        class ParentClas extends MyClass{
            constructor(){
                super();
                this.prop='haha';   //   get            set    
                //   set props(value)    value  haha
            }
        }
        
        let parentClass=new ParentClas();   //     
        console.log('parentClass.prop:',parentClass.prop);
        parentClass.prop="heihei";
        //   set props(value)    value  heihei
        console.log('parentClass.prop:',parentClass.prop);
        console.log("str :", str);
        //    str get props      
    }
    
    block();
    function block2() {
        class Language {
            constructor(type) {  //undefined
                this.type = type;  //        undefined
            }
            get info() {
                return this.type;
            }
            set info(type) {
                console.log(`set   :${type}`);
                //set     return        info       get      
            }
            
        }
        const test = new Language();
        test.info = 'Python';  //  info           
        console.log(test.info);
    }
    
     block2();
    
    
    
    JavaScript中のes 6のクラスとクラスの継承(三)