当前位置: 首页 > news >正文

封装_私有类字段和方法

前言

在 JavaScript 中,封装、私有类字段和方法是面向对象编程的一种重要特性。它们允许你将数据(属性)和对数据的操作(方法)组合在一起,并控制访问权限,从而提高代码的安全性和可维护性。私有字段和私有方法是指仅能在类的内部访问的属性和函数。外部代码无法直接访问或修改这些私有成员,这样就可以防止外部依赖于内部实现细节,提高了模块化和安全性。
本篇文章我们就来学习一下JavaScript中的公有字段,私有字段,公有方法,私有方法,还是以上一节的代码举例

class Account {constructor(owner, currency, pin) {this.owner = owner;this.currency = currency;this._pin = pin;this._movements = [];this.locale = navigator.language;console.log(`欢迎来到你的账户,${owner}`);}//公共接口getMovements() {return this._movements;}deposit(val) {this._movements.push(val);}withraw(val) {this.deposit(-val);}_approveLoan(val) {return true;}requestLoan(val) {if (this._approveLoan(val)) {this.deposit(val);console.log('恭喜你!贷款成功');}}
}

公共字段

● 例如我们将浏览器设置语言和存取款的操作记录设置我公有字段,所有人都可以访问

class Account {//公有字段(例子,实际与之前写法作用一样)locale = navigator.language;_movements = [];constructor(owner, currency, pin) {this.owner = owner;this.currency = currency;this._pin = pin;console.log(`欢迎来到你的账户,${owner}`);}//公共接口getMovements() {return this._movements;}deposit(val) {this._movements.push(val);}withraw(val) {this.deposit(-val);}_approveLoan(val) {return true;}requestLoan(val) {if (this._approveLoan(val)) {this.deposit(val);console.log('恭喜你!贷款成功');}}
}

私有字段

● 例如存款取款记录是私有字段,我们不希望可以被直接访问,从 ECMAScript 2022 开始,JavaScript 引入了私有字段的语法,例如 #privateField。

class Account {//公有字段(例子,实际与之前写法作用一样)locale = navigator.language;//私有字段#movements = [];#pin;constructor(owner, currency, pin) {//参数中不可以直接为私有字段this.owner = owner;this.currency = currency;this.#pin = pin;console.log(`欢迎来到你的账户,${owner}`);}//公共接口getMovements() {return this.#movements;}deposit(val) {this.#movements.push(val);}withraw(val) {this.deposit(-val);}_approveLoan(val) {return true;}requestLoan(val) {if (this._approveLoan(val)) {this.deposit(val);console.log('恭喜你!贷款成功');}}
}

● 这样我们无法直接查看这个字段,当然使用getMovements同样可以访问,因为她还是一个公有的API

console.log(ITshare.#movements);

在这里插入图片描述

公共方法

这个就不在赘述在了,在上述的构造器中,所有的方法都是公共方法

私有方法

私有方法和私有字段的表现方式一样

class Account {//公有字段(例子,实际与之前写法作用一样)locale = navigator.language;//私有字段#movements = [];#pin;constructor(owner, currency, pin) {//参数中不可以直接为私有字段this.owner = owner;this.currency = currency;this.#pin = pin;console.log(`欢迎来到你的账户,${owner}`);}//公共接口getMovements() {return this.#movements;}deposit(val) {this.#movements.push(val);}withraw(val) {this.deposit(-val);}requestLoan(val) {if (this.#approveLoan(val)) {this.deposit(val);console.log('恭喜你!贷款成功');}}//私有方法#approveLoan(val) {return true;}
}

http://www.mrgr.cn/news/17469.html

相关文章:

  • django企业开发实战-学习小结1
  • 数据库(MySQL)的基本操作
  • 每日错题(2024年9月1日)
  • Docker(完整实验版)
  • 二分查找 | 二分模板 | 二分题目解析
  • 时间戳:时间的数字化表达
  • 顶顶通热词模型配置热词方法(mod_cti基于FreeSWITCH)
  • Mysql:create table ... select ...报错
  • 18041 分期还款(加强版)
  • 进程间的通信(IPC)基础了解,匿名管道使用,有名管道使用
  • 9-8 束搜索
  • 栈和队列的学习以及实现+双端队列的底层原理
  • wiki.js 部署
  • 华为云征文 | Flexus X与宝塔面板的完美结合,让云管理更轻松
  • 读书闲思---2024.09.01
  • nginx部署前端vue项目步骤
  • Java网络编程概述
  • python 笔记 geo-bleu
  • OpenSetting组件的用法
  • 【秋招笔试】9.01字节跳动秋招(已改编)-三语言题解