美文网首页
深入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

    es5定义一个类 es6定义一个类 es6原型方法(内部this是实例化的类) 静态方法(内部this是类) 继承

  • 关于Class之深入Class

    问题 以下代码输出结果是什么? 现在我们来一步一步解析上述代码: isKindOfClass & isMember...

  • ES6——Reflect 与 Proxy

    ES6 之 Proxy 介绍深入实践 ES6 Proxy & Reflect 1.Proxy Proxy 可以对目...

  • 原型与原型链

    关键字 prototype constructor __proto__ Object 在没有ES6的Class之...

  • ES6 class与继承

    class是什么 class是定义类的方法。ES6之前用构造函数的方式定义类,ES6引入了class。 class...

  • ES6之class

    class介绍 ES6之前,我们只能通过构造函数来生成实例对象。 这种写法个人认为有些麻烦,新手不太能理解(尤其是...

  • ES6之class

    解决的问题 更加清晰的书写继承,面向对象编程 基本语法 constructor 构造方法,this关键字代表构造对...

  • ES6之Class

    基本写法 ES6的class语法基本上就是基于以前ES5构造函数的包装函数,也可以叫做语法糖,所有的功能都能用ES...

  • ES6之class

    class基本语法: 1.实质: ​ class只是一个语法糖,类的所有方法都定义在类的prototype...

  • ES6之Class

    参考地址:http://es6.ruanyifeng.com/#docs/class 本节缺少实战与深刻理解,本节...

网友评论

      本文标题:深入es6之class

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