JavaScript-高级篇,类的创建

100 阅读2分钟

「这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战」。

  • 在 ES6 中新增加了类的概念,可以使用 class 声明一个类,之后以这个类来实例化对象。类抽象了对象的公共部分,它泛指某一大类(class)对象特指某一个,通过类实例化一个具体的对象

  • Class类实现了在JavaScript中声明一个新的类, 并通过构造函数实例化这个类的机制。通过使用Class.create()方法, 你实际上声明了一个新的类, 并定义了一个initialize()方法作为构造函数, 一旦你在这个声明的类的prototype中实现了改该方法, 你就可以使用new操作符来创建并实例化一个类。

  • 需要注意的是在js中,从es6开始引进class,根本上是基于js中已经存在的原型继承的语法糖,class语法并没有引进一种新的面向对象的继承机制

  • class事实上是一种特殊的funcion,就像可以定义funcion表达式和funcion声明一样,定义一个class,可以使用class关键字加上类名。需要注意的是,funcion声明和class声明有一个重要的区别:funcion声明是hosting(状态提升)的,而class不是,class需要先声明再使用。

(1) 创建类

语法:

//步骤1 使用class关键字

class Person {

  // class body

}     

//步骤2使用定义的类创建实例  注意new关键字

var xx = new Person();

举个栗子:

class Person {

    constructor(uname, age) {

        this.uname = uname;

        this.age = age;

    }

}

 

// 2. 利用类创建对象 new

var p1 = new Person('张三', 18);

console.log(p1);

console.dir(Person);

运行结果和使用构造函数方式一样。

补充:

  • javascript是面向对象的,怎么体现javascript的继承关系?使用prototype原型来实现。

  • javascript语言实现继承机制的核心就是  (原型),而不是Java语言那样的类式继承。Javascript解析引擎在读取一个Object的属性的值时,会沿着(原型链)向上寻找,如果最终没有找到,则该属性值为undefined;如果最终找到该属性的值,则返回结果。