JavaScript中的私有/静态属性介绍

当我们谈到JavaScript中的“私有”和“静态”属性时,我们实际上是在谈论不同类型的属性。

私有属性

私有属性是指只能在类的内部使用的属性。这意味着它们不能通过类的实例或外部访问。为了理解私有属性,让我们来看一个简单的例子:

class Person {
  #name = '';

  set name(name) {
    this.#name = name;
  }

  get name() {
    return this.#name;
  }
}

在这个例子中,我们使用了一个带有井号(#)前缀的变量名来定义私有属性name。在set nameget name方法中,我们可以访问这个私有属性。

const person = new Person();
person.name = 'John Doe'; // 使用 setter 方法设置私有属性
console.log(person.#name); // 这里会报错,因为私有属性不能被访问
console.log(person.name); // 使用 getter 方法访问私有属性

可以看出,我们不能直接访问私有属性,但可以通过公共接口来存储和检索这些属性。

静态属性

与私有属性不同,静态属性是绑定到类本身的属性而不是类的实例。静态属性对于存储与类相关的信息非常有用,例如类的版本号、缺省值或敏感信息,因为它们不会被多个类实例所访问或更改。让我们来看一个例子:

class MyClass {
  static PI = 3.14159;
  static HELLO = 'Hello, World!';
}

console.log(MyClass.PI); // 3.14159
console.log(MyClass.HELLO); // Hello, World!

在这个例子中,我们使用static关键字将PIHELLO静态属性绑定到MyClass本身上。我们可以使用MyClass.PIMyClass.HELLO来访问这些属性,而不需要创建MyClass的实例。

另一个示例:

class Task {
  static taskCount = 0;

  constructor(name) {
    this.name = name;
    Task.taskCount++;
  }

  static count() {
    return Task.taskCount;
  }
}

let task1 = new Task('任务1');
let task2 = new Task('任务2');

console.log(Task.count()); // 2

这个例子中,我们使用静态属性taskCount来记录Task类的实例数量。在每次创建任务的时候,我们增加计数器,然后通过静态方法count返回实例数量。 注意,我们可以从静态方法count中访问静态属性taskCount

通过使用静态属性和方法,我们可以方便地记录类相关的信息,而不必担心另一个类实例会更改或访问这些值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中的私有/静态属性介绍 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js传各种类型参数到Controller层的整理方式

    下面我分享一下“js传各种类型参数到Controller层的整理方式”的攻略。 在前端页面调用Controller层时,我们需要将页面中的数据传给Controller层进行后台处理,这时需要注意参数的类型和格式。一般来说,前端页面向后端Controller层参数传递有以下几种方式:GET方式,POST方式,以及使用Ajax进行传递。不同的传递方式,参数的整理…

    JavaScript 2023年6月10日
    00
  • 详解JavaScript对象类型

    详解JavaScript对象类型 什么是JavaScript对象类型? JavaScript是一门面向对象的语言,因此对象是JavaScript中最重要的数据类型之一。对象可以看作是属性的集合,每个属性都有一个名字和一个值,属性值可以是其他任何JavaScript数据类型,包括数字、字符串、数组和函数等。 在JavaScript中,有一些内置对象类型,如Ar…

    JavaScript 2023年5月27日
    00
  • JavaScript对象属性设置和屏蔽技巧

    关于JavaScript对象属性设置和屏蔽技巧,我从下面的几个方面详细阐述: 禁止增加属性 我们可以使用 Object.preventExtensions() 方法来禁止对象增加属性。如果我们尝试给一个被禁止增加属性的对象增加属性,就会失败并抛出错误。 const obj = { a: 1, b: 2 }; Object.preventExtensions(…

    JavaScript 2023年5月27日
    00
  • Javascript constructor 属性

    以下是关于JavaScript constructor属性的完整攻略。 JavaScript constructor属性 在JavaScript中,每个对象都有一个constructor属性,它指向创建该对象的构造函数。constructor属性是一个函数,用于创建该对象的实例。当我们创建一个对象,JavaScript会自动为该对象添加constructor…

    JavaScript 2023年5月11日
    00
  • JS编程小常识很有用

    JS编程小常识是指在JavaScript编程中,常用到的一些小技巧和注意事项。这些小常识可以帮助开发者以更高效、安全、健壮的方式编写JavaScript代码。下面是一个完整的攻略,包括示例说明 1. 变量声明 使用const和let来声明变量,而不是使用var。 使用const对于不会被重新赋值的变量,使用let对于可能被重新赋值的变量。 不要使用全局变量,…

    JavaScript 2023年6月10日
    00
  • javascript实现最长公共子序列实例代码

    下面是关于“javascript实现最长公共子序列实例代码”的完整攻略。 完整任务说明 本任务要求实现一个javascript代码,用于寻找两个字符串的最长公共子序列。 功能要求 输入两个字符串,比如”abcdfg”和”abdfg”,程序需要输出它们的最长公共子序列。 实现的算法需要支持对长度为m和n的字符串进行快速计算,时间复杂度需要为 O(m*n)。 背…

    JavaScript 2023年5月28日
    00
  • 微信小程序倒计时功能实现代码

    下面是讲解“微信小程序倒计时功能实现代码”的完整攻略。主要分为以下几个步骤: 步骤一:编写倒计时函数 倒计时的实现需要从当前时间开始计算,计算出设定的截止时间,然后不断刷新倒计时的显示,直到倒计时结束。下面是一个简单的倒计时函数实现示例: function countdown(endTime) { var now = +new Date(); // 计算剩余…

    JavaScript 2023年6月11日
    00
  • Javascript中神奇的this

    Javascript中神奇的this攻略 在Javascript中,this是一个非常重要的概念。它代表了当前函数执行的上下文。但是,由于其特殊的语法规则与行为,经常会导致混乱和错误。在此,我们将讨论Javascript中神奇的this及其使用攻略。 常见的this绑定规则 在Javascript中,this的绑定有四种方法,它们分别是: 默认绑定规则:当一…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部