美文网首页
深入es6之class

深入es6之class

作者: Nic_ofh | 来源:发表于2017-08-21 00:37 被阅读0次

    es5定义一个类

    function Parent(x) {
      // 实例属性(构造函数属性)
        this.x = x
    }
    var p =new Parent('欧富华')
    console.log(p.x) // 欧富华
    

    es6定义一个类

    class Parent {
        constructor(x) {
     // 实例属性(构造函数属性)
            this.x = x
        }
    }
    var p =new Parent('欧富华')
    console.log(p.x) // 欧富华
    

    es6原型方法(内部this是实例化的类)

    
    class Parent {
        // 实例属性
        constructor(x) {
            this.x = x
        }
    
        // 原型(prototype)方法
        getX() {
            return this.x
        }
    
        // es6 获取值
        get loop() {
            return 'loop'
        }
    
        // es6 设置值
        set setLoop(value) {
            this.b = value
        }
    
        // 静态方法
        static loop() {
            return '我是静态方法'
        }
    }
    
    let p = new Parent('欧富华')
    console.log(p.getX(), p.loop)  // 欧富华,loop
    

    静态方法(内部this是类)

     class Parent {
            // 原型方法
            l() {
                // this是实例的类
                console.log('我是原型方法')
            }
    
            static loop() {
                // this是Parent
                // this.l()  报错
                this.a() // 成功
                console.log('我是静态方法')
            }
    
            static a() {
                console.log('我是静态方法')
            }
        }
        // 调用不需要实例化
        Parent.loop() // 我是静态方法(输出2次)
    

    继承

       class Parent {
            constructor(x) {
                this.x = x
            }
    
            // 原型方法
            l() {
                // this是实例的类
                console.log('我是原型方法')
                return '2'
            }
    
            static loop() {
                // this是Parent
                // this.l()  报错
                this.a() // 成功
                console.log('我是静态方法')
            }
    
            static a() {
                console.log('我是静态方法')
            }
        }
    
        // 调用不需要实例化
        Parent.loop() // 我是静态方法(输出2次)
        Parent.a = 1
    
        // 继承会把父类的原型属性和静态属性都会继承
        class Child extends Parent {
            constructor(x, type) {
                // 继承属性,必须要
                super(x)
                // 新增子类属性
                this.type = type
            }
            list(){
                console.log(super.l()) // 调用父类的方法
            }
        }
    
        let child = new Child()
        child.list() // 2
    
    

    相关文章

      网友评论

          本文标题:深入es6之class

          本文链接:https://www.haomeiwen.com/subject/awbqdxtx.html