JavaScript 类

x33g5p2x  于2022-05-08 转载在 Java  
字(2.3k)|赞(0)|评价(0)|浏览(350)

在本教程中,您将借助示例了解 JavaScript 类。
    类是ES6版本的 JavaScript 中引入的特性之一。类是对象的蓝图。您可以从类中创建一个对象。
    您可以将类视为房屋的草图(原型)。它包含有关地板、门、窗等的所有详细信息。根据这些描述,您可以建造房屋。房屋是对象。
    由于可以从相同的描述中建造许多房屋,因此我们可以从一个类中创建许多对象。

创建 JavaScript 类

JavaScript 类类似于 Javascript 构造函数,只是一个语法糖。
    构造函数定义为:

// constructor function
function Person () {
    this.name = 'John',
    this.age = 23
}

// create an object
const person1 = new Person();

不使用 function 关键字,而是使用 class 关键字来创建JS类。例如,

// creating a class
class Person {
  constructor(name) {
    this.name = name;
  }
}

class 关键字用于创建类。属性在构造函数中分配。
    现在您可以创建一个对象。例如,

// creating a class
class Person {
  constructor(name) {
    this.name = name;
  }
}

// creating an object
const person1 = new Person('John');
const person2 = new Person('Jack');

console.log(person1.name); // John
console.log(person2.name); // Jack

这里,person1 和 person2 是 Person 类的对象。
    注意:每次创建对象时,都会自动调用类中的 constructor() 方法。

Javascript 类方法

在使用构造函数时,可以将方法定义为:

// constructor function
function Person (name) {

   // assigning  parameter values to the calling object
    this.name = name;

    // defining method
    this.greet = function () {
        return ('Hello' + ' ' + this.name);
    }
}

在 JavaScript 类中定义方法很容易。您只需给出方法的名称,后跟 ()。例如,

class Person {
    constructor(name) {
    this.name = name;
  }

    // defining method
    greet() {
        console.log(`Hello ${this.name}`);
    }
}

let person1 = new Person('John');

// accessing property
console.log(person1.name); // John

// accessing method
person1.greet(); // Hello John

注意:要访问对象的方法,需要在其名称后跟()来调用该方法。

Getter 和 Setter

在 JavaScript 中,getter 方法获取对象的值,setter 方法设置对象的值。
    JavaScript 类包括 getter 和 setter。getter 方法使用 get 关键字,setter 方法使用 set 关键字。例如,

class Person {
    constructor(name) {
        this.name = name;
    }

    // getter
    get personName() {
        return this.name;
    }

    // setter
    set personName(x) {
        this.name = x;
    }
}

let person1 = new Person('Jack');
console.log(person1.name); // Jack

// changing the value of name property
person1.personName = 'Sarah';
console.log(person1.name); // Sarah
Hoisting(变量提升)

在使用类之前,应该先定义它。与函数和其他 JavaScript 声明不同,类不会被提升。例如,

// accessing class
const p = new Person(); // ReferenceError

// defining class
class Person {
  constructor(name) {
    this.name = name;
  }
}

如您所见,在定义类之前访问它会抛出一个错误。

use strict(严格模式)

类总是遵循“严格模式”。类中的所有代码都自动处于严格模式。例如,

class Person {
  constructor() {
    a = 0;
    this.name = a;
  }
}

let p = new Person(); // ReferenceError: Can't find variable: a

注意:JavaScript 类是一种特殊类型的函数。typeof 运算符返回 function。
    例如,

class Person {}
console.log(typeof Person); // function

上一教程 :Destructuring Assignment                                          下一教程 :JS Inheritance

参考文档

[1] Parewa Labs Pvt. Ltd. (2022, January 1). Getting Started With JavaScript, from Parewa Labs Pvt. Ltd: https://www.programiz.com/javascript/classes

相关文章