• 目录
  • 简介
  • 收藏

    烂尾楼

    莫导喜欢听人叫他爸爸…… 要是让莫导的广大粉丝知衣冠禽兽的莫导居然有这个癖好……   你以为会发生 粉转黑、路转喷这样的事情吗?   不,他们会说我们愿意。   爸爸爹爹皇阿玛,换着花样叫都行!   床上床下叫都没关系!

    乱码

    小说: 烂尾楼 作者:衣衫似风雪 字数:1097 更新时间:2024-03-29 17:57:36

    概述

    在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。

    class 的本质是 function。

    它可以看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。

    基础用法

    类定义

    类表达式可以为匿名或命名。

    // 匿名类

    let Example = class {

    constructor(a) {

    this.a = a;

    }

    }

    // 命名类

    let Example = class Example {

    constructor(a) {

    this.a = a;

    }

    }

    类声明

    class Example {

    constructor(a) {

    this.a = a;

    }

    }

    注意要点:不可重复声明。

    class Example{}

    class Example{}

    // Uncaught SyntaxError: Identifier 'Example' has already been

    // declared

    let Example1 = class{}

    class Example{}

    // Uncaught SyntaxError: Identifier 'Example' has already been

    // declared

    注意要点

    类定义不会被提升,这意味着,必须在访问前对类进行定义,否则就会报错。

    类中方法不需要 function 关键字。

    方法间不能加分号。

    new Example();

    class Example {}

    类的主体

    属性

    prototype

    ES6 中,prototype 仍旧存在,虽然可以直接自类中定义方法,但是其实方法还是定义在 prototype 上的。 覆盖方法 / 初始化时添加方法

    Example.prototype={

    //methods

    }添加方法

    Object.assign(Example.prototype,{

    //methods

    })

    静态属性

    静态属性:class 本身的属性,即直接定义在类内部的属性( Class.propname ),不需要实例化。 ES6 中规定,Class 内部只有静态方法,没有静态属性。

    class Example {

    // 新提案

    static a = 2;

    }

    // 目前可行写法

    Example.b = 2;

    公共属性

    class Example{}

    Example.prototype.a = 2;

    实例属性

    实例属性:定义在实例对象( this )上的属性。

    class Example {

    a = 2;

    constructor () {

    console.log(this.a);

    }

    }

    name 属性

    返回跟在 class 后的类名(存在时)。

    let Example=class Exam {

    constructor(a) {

    this.a = a;

    }

    }

    console.log(Example.name); // Exam

    let Example=class {

    constructor(a) {

    this.a = a;

    }

    }

    console.log(Example.name); // Example

    Email
    lovenovelapp@gmail.com
    Facebook主页
    @Lovenovel
    Twitter
    @lovenovelapp