• 学习笔记:ES6 class


    Class基本语法

    JavaScript语言的传统方法是通过构造函数,定义并生成新对象。

    //定义一个构造函数
    function Point(x, y) {
        this.x = x;
        this.y = y;
    }
    
    //在原型上添加构造函数的实例方法
    Point.prototype.toString = function () {
        return '(' + this.x + ', ' + this.y + ')';
    }
    
    //生成一个新对象
    var p = new Point(1, 2);

    新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。

    上面的代码用ES6的“类”改写,如下:

    // 定义类
    class Point {
        constructor(x, y) { //构造方法,this代表实例对象
            this.x = x;
            this.y = y;
        }
        //类的方法(将被实例继承)
        toString() {
            return '(' + this.x + ', ' + this.y + ')'
        }
    }
    
    //生成一个新对象
    var p = new Point(1, 2)

    以上对类的方法的定义,都是在prototype属性上面。

    等同于以下方式:

    Point.prototype = {
        toString () {}
    }

    constructor方法

    constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加

    constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。

    class Foo {
        constructor () {
            return Object.create(null); //修改返回值
        }
    }
    
    new Foo() instanceof Foo
    // false

    类的构造函数,不适用new调用会报错。

    如何生成类的实例对象?

    var point = new Point(2, 3);

    Class表达式

    // Class表达式
    const MyClass = class Me { // Me只在Class内部代码可用,指代当前类,可省略。
        getClassName () {
            return Me.name;
        }
    }

    私有方法

    this的指向

    类的方法内部如果含有this,它默认指向类的实例。

    Class的继承

    Class之间可以通过extends关键字来实现继承。

    class ColorPoint extends Point {}
    super关键字表示父类的构造函数,用来新建父类的this对象
    ES6的继承机制是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this
    constructor(...args) {
        super(...args);
    }

    太长了,后面都省略...

    参考文章:http://jsrun.net/tutorial/SZKKp

  • 相关阅读:
    Excel Sheet Column Number
    HappyNum
    isIsomorphic
    Contains DuplicateII
    iis7 设置http 自动跳转到https
    php 安装redis
    java 打包 war包
    NPOI 操作excel之 将图片插入到指定位置;
    nopi 简洁笔记
    vs11 微软下载地址
  • 原文地址:https://www.cnblogs.com/cathy1024/p/11200020.html
Copyright © 2020-2023  润新知