📜  JavaScript ES6 类中的私有属性 - Java (1)

📅  最后修改于: 2023-12-03 15:01:37.460000             🧑  作者: Mango

JavaScript ES6 类中的私有属性 - Java

在 JavaScript ES6 中,类的声明方式有所不同,并且可以轻松地实现私有属性。在本文中,我们将介绍如何在 ES6 类中声明私有属性。

什么是私有属性?

在面向对象编程中,我们经常需要将某些属性保护起来,以防止其他对象篡改它们。这些属性称为私有属性。在传统的 JavaScript 中,我们无法轻松地实现私有属性。使用闭包或者将属性命名为以下划线开头的方式来模拟私有属性。

ES6 中的类声明方式

ES6 中引入了新的类声明方式,使用 class 关键字。类可以包含属性和方法。例如:

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

  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

const john = new Person('John', 25);
john.greet(); // Hello, my name is John and I am 25 years old.

每个类都有一个 constructor 方法,用于初始化对象的属性。我们还可以定义其他方法,如上面的 greet 方法。这些方法被添加到类的原型中。

实现私有属性

在 ES6 中,私有属性声明方式与常规属性有所不同。私有属性应该在类的构造函数中声明,而不是在类的顶层声明中。

class Person {
  #name;
  #age;

  constructor(name, age) {
    this.#name = name;
    this.#age = age;
  }

  greet() {
    console.log(`Hello, my name is ${this.#name} and I am ${this.#age} years old.`);
  }
}

const john = new Person('John', 25);
john.greet(); // Hello, my name is John and I am 25 years old.
console.log(john.#name); // SyntaxError

在这里,我们使用了 # 前缀来声明私有属性 nameage。注意,它们仅出现在构造函数中而不是类的顶层声明中。这些私有属性不能从类的外部访问,尝试访问会导致 SyntaxError。我们可以通过公共方法来访问这些私有属性,就像访问常规属性一样。

结论

在 ES6 中,我们可以轻松地声明并使用私有属性。使用 # 前缀进行声明,并在构造函数中初始化属性。注意,私有属性不能从类的外部访问,只能通过类的方法进行访问。