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

yizhihongxing

当我们谈到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日

相关文章

  • nodejs读取memcache示例分享

    下面我将为你详细讲解“Node.js读取Memcache示例分享”的完整攻略。这个过程将包括以下两个示例: 示例1:安装Node-memcache模块 Node-memcache是Node.js下的Memcache客户端模块,它可以帮助你连接到Memcache服务器并读取数据。请按照以下步骤进行安装:1.打开终端并进入项目目录。2.在终端中键入以下命令并按回…

    JavaScript 2023年5月19日
    00
  • JavaScript通过字符串调用函数的实现方法

    JavaScript可以通过字符串调用函数的方法称为函数调用方法,也就是将字符串转化成函数名称并直接调用对应的函数。下面是一些实现方法的示例说明: 1. 使用eval()函数实现字符串调用函数 使用eval()函数可以将字符串解析成JS代码并执行,从而实现字符串调用函数的方法。 // 定义需要调用的函数 function greeting(message) …

    JavaScript 2023年5月28日
    00
  • 利用js来实现缩略语列表、文献来源链接和快捷键列表

    要实现缩略语列表、文献来源链接和快捷键列表的功能,可以使用一些JavaScript库和工具来完成,常见的包括jQuery和Bootstrap等。 缩略语列表 Markdown中可以通过使用缩略语的方式来节约篇幅。可以使用JavaScript来添加一个缩略语列表,让用户能够快速查看和了解所有的缩略语含义。 实现步骤: (1)首先需要在Markdown文档中定义…

    JavaScript 2023年6月10日
    00
  • JS实现的汉字与Unicode码相互转化功能分析

    JS实现的汉字与Unicode码相互转化功能分析 概述 汉字和Unicode码相互转换是前端开发中常用的功能之一。汉字是人类语言和文字的精华,其中汉字的使用非常广泛,而Unicode码则是电脑中汉字的对应编码,当我们需要将汉字和Unicode码相互转换时,用JS实现是一种极其方便且高效的方法。 汉字转Unicode码 在JS中,如果需要将汉字转换为Unico…

    JavaScript 2023年5月19日
    00
  • 一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill

    开始 一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill allSettled 的用法 const runAllSettled = async () => { const successPromise = Promise.resolve(‘success’) //…

    JavaScript 2023年4月30日
    00
  • 在vue中实现嵌套页面(iframe)

    在vue中实现嵌套页面(iframe)需要进行以下步骤: 步骤一:安装依赖 使用vue-cli等工具创建一个vue项目后,在项目根目录下执行以下命令,安装vue-iframe包 npm install –save vue-iframe 步骤二:注册组件 打开项目的main.js,注册全局组件 import Vue from ‘vue’ import vue…

    JavaScript 2023年6月11日
    00
  • javaScript事件学习小结(四)event的公共成员(属性和方法)

    首先,需要了解JavaScript中事件的公共成员包括属性和方法。属性包括类型(type)、目标(target)、当前目标(currentTarget)、时间戳(timeStamp)等,方法包括阻止默认事件(preventDefault)、停止冒泡(stopPropagation)等。 对于属性,可以在事件处理函数中使用event对象获取,例如: <b…

    JavaScript 2023年6月10日
    00
  • js中对象与对象创建方法的各种方法

    下面是关于JavaScript中对象以及创建对象的方法的详细攻略。 一、对象的定义 在JavaScript中,对象是一组属性和方法的集合。对象可以像字典一样,用键值对来存储和调用属性和方法。 对象定义的方式有两种: 1. 直接量方式 直接量方式就是在大括号内写对象的属性和方法: let person = { name: ‘张三’, age: 18, sayH…

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