JavaScript方法链

news2024/12/23 16:11:05

前言

在JavaScript中,方法链(Chaining Methods)是一种编程技术,允许你在一个表达式中连续调用多个方法。这通常通过让每个方法返回对象自身(this)来实现,从而可以在同一行上依次调用多个方法。

● 例如,如果我们想进行一系列操作,例如存款500,取款35,贷款1000,取款500;

ITshare.deposit(500).withraw(35).requestLoan(1000).withraw(500);

在这里插入图片描述

我们发现这样做是完全行不通的,我们需要再方法中返回自身来实现支持链式调用

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);
    return this; // 返回当前对象以支持链式调用
  }

  withraw(val) {
    this.deposit(-val);
    return this; // 返回当前对象以支持链式调用
  }

  requestLoan(val) {
    if (this.#approveLoan(val)) {
      this.deposit(val);
      console.log('恭喜你!贷款成功');
    }
    return this; // 返回当前对象以支持链式调用
  }

  //私有方法
  #approveLoan(val) {
    return true;
  }
}

const ITshare = new Account('ITshare', 'EUR', '21211');
ITshare.deposit(250);
ITshare.withraw(120);
ITshare.requestLoan(1000);
console.log(ITshare);
ITshare.deposit(500).withraw(35).requestLoan(1000).withraw(500);

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件加密软件怎么选呢?五款人气超高的文件加密软件推荐给你

文件加密软件怎么选呢?以下是五款人气超高的文件加密软件,包括安企神在内,它们各自具有独特的功能和优势: 安企神 功能特点:安企神是一款功能强大的企业级文件加密软件,提供全方位的数据安全保护。它采用先…

TPAMI 2024|如何在动态世界中捕捉每一个细节?智能视觉识别的突破,开放长尾识别技术详解!

题目:Open Long-Tailed Recognition in a Dynamic World 动态世界中的开放长尾识别 作者:Ziwei Liu; Zhongqi Miao; Xiaohang Zhan; Jiayun Wang; Boqing Gong; Stella X. Yu 源码链接: https://liuziwei7.github.io/projects/LongTail.ht…

Java项目: 基于SpringBoot+mysql网上订餐系统分前后台(含源码+数据库+开题报告+PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql网上订餐系统分前后台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单…

Ollydbg提示:xxxxxx可能不是一个 32 位 PE 文件,无论如何都尝试载入吗?

原标题:OD提示C:\Users\XuanRan\Desktop\xxxx.exe’可能不是一个个 32 位 PE 文件,无论如何都尝试载入吗? 它的意思就是告诉你,OD现在只能用于32位软件。 如果要调试64位程序,去使用x64dbg x64dbg下载链接: https://github.com…

代码随想录算法训练营第32天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

目录 509. 斐波那契数1、题目描述2、思路3、code4、复杂度分析 70. 爬楼梯1、题目描述2、思路3、code 746. 使用最小花费爬楼梯1、题目描述2、思路3、code4、复杂度分析 509. 斐波那契数 题目链接:link 1、题目描述 斐波那契数 (通常用 F(n) 表示&…

503错误

503 Service Temporarily Unavailable 我在学习ES-IK分词器时restart es后发现刷新网页报了503错误 后面发现是由于浏览器缓存或存储的Cookies引起的,需要清除缓存和Cookies 然后在游览器设置中找到 ​​ 然后刷新发现可以了

从初阶到顶尖:腾讯产品经理五级能力模型深度解读

产品经理在互联网企业中扮演着至关重要的角色,他们负责从需求分析到产品落地的整个生命周期。在腾讯的产品经理能力模型中,能力被分为五个等级(Level 1 到 Level 5),每个等级代表了产品经理在通用能力、专业知识、专业…

【Python报错已解决】“ModuleNotFoundError: No module named ‘mne‘”

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述1.1 报错示例:当我们尝试导入MNE-Python库时,可能会看到以下错误…

基础动销方案:开启稳健起步之路

在当今竞争激烈的商业世界中,如何让产品或服务实现有效动销,是企业生存与发展的关键所在。而基础动销方案,正是企业迈出稳健第一步的重要策略。 基础动销到底有多重要呢?它能在产品或服务推出初期,通过一系列营销手段达…

2025毕业季:如何用Java SpringBoot构建医疗就诊平台?掌握最新技术,开启医疗信息化大门

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

Windows 下载安装RabbitMQ

环境描述 windows10 Erlang 26.2.x 版本 RabbitMQ 3.13.7 因为RabbitMQ是Erlang语言开发的,所以必须安装 Erlang RabbitMQ官网链接: https://www.rabbitmq.com/docs/which-erlang 1.下载并安装Erlang 26.2.5 1.1下载Erlang 26.2.5 https://erlang.org/dow…

2.【R语言】RStudio的下载和安装

2.1 RStudio的介绍 RStudio 是一种集成开发环境 (Integrated Development Environment, IDE),主要用于 R 语言的开发和数据分析。它为 R 语言的使用者提供了一系列便捷的工具和功能,使得编写、调试和执行 R 代码变得更加高效和直观。以下是对 RStudio 主…

面向电商与营销的AI一键试衣:打造个性化购物体验

随着人工智能技术的迅猛发展,虚拟试衣功能正在逐渐改变消费者的在线购物体验。本文将介绍一项名为“Kolors”的项目,它利用先进的AI技术,为电商平台和营销活动提供了一键试衣功能。通过精确调整和优化服装在生成图像中的外观,Kolors使得虚拟试衣体验更加自然和逼真。 一、项…

nginx 部署前端vue项目

文章目录 一、什么是nginx?二、nginx 部署前端vue项目步骤2.1 安装nginx2.1.1 windows环境安装2.1.2 linux环境安装 2.2 打包vue项目 2.3 配置nginx 一、什么是nginx? Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架&…

JDK7前时间相关类(Data,SimpleDataFormat,Calender)

Data时间类 世界标准时间:格林尼治时间(GMT) 目前世界标准时间(UTC)已经替换为:原子钟 中国标准时间:世界标准时间8小时 总结: 1.如何创建日期对象? Data data new…

FreeRTOS线程数据传递---消息队列

简介 队列操作 创建队列 队列写入 队列写入 队列读取 队列相关函数 1.创建队列 2.向队列写入 3.从队列读取 队列的其他写入API函数 简介 在实际的项目开发中,经常会遇到在任务于任务之间或任务于中断之间需要进行“沟通交 流”,这…

2D 凸包-2D Convex Hulls

2D 凸包-2D Convex Hulls 本章描述了CGAL中用于生成二维凸包的函数,以及用于检查点集是否为强凸的函数。还有许多用于计算特殊极值点和包点子序列的函数,如一组点的下包和上包。 CGAL提供了几种经典算法的实现,用于计算二维点集的逆时针极值…

嵌入式软件--51单片机 DAY 1

一、单片机 1.单片机概念 51单片机(或称8051单片机)原是指1980年由Intel公司推出的一种8位微控制器系列,现在更多的指实现了8051指令集(单片机的“语言”)的一系列单片机。8位指的是寄存器的位数和数据总线的位数&…

分贝通助力云天励飞“甩掉”每月报销烦恼

技术创新和应用落地两手抓,已经是每一家人工智能企业突破瓶颈、快速发展的共同选择。可在组织的日常运营中,如何提升创新效率,保证项目建设又快又好完成,人效是关键。作为国内领先的人工智能企业,云天励飞率先选择从费用支出的角度寻找人效升级突破。 企业介绍 云天励飞成立于…

confluent-kafka

confluent-kafka pip3 install confluent-kafkaProducer.py from confluent_kafka import Producer# Kafka 配置 config {bootstrap.servers: 10.10.x.x:3082,security.protocol: SASL_PLAINTEXT,sasl.mechanism: SCRAM-SHA-512,sasl.username: kafka-974a3a34-bpxuser1,sas…