如何在 JavaScript 中创建可链接函数?

2023-11-27

让我们想象一下这样的函数:

function foo(x) {
    x += '+';
    return x;
}

它的用法如下:

var x, y;
x = 'Notepad';
y = foo(x);
console.log(y); // Prints 'Notepad+'.

我正在寻找一种方法来创建可与其他函数链接的函数。

想象一下用法:

var x, y;
x = 'Notepad';
y = x.foo().foo().toUpperCase(); // Prints 'NOTEPAD++'.
console.log(y);

我该怎么做?


当然,诀窍是在完成修改后返回该对象:

String.prototype.foo = function() {
    return this + "+";
}

var str = "Notepad";
console.log(str.foo().foo().toUpperCase());

http://jsfiddle.net/Xeon06/vyFek/

为了使该方法可用String,我正在修改它的原型。小心不要这样做Object但是,因为在枚举它们的属性时可能会导致问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中创建可链接函数? 的相关文章

随机推荐

  • EventLogQuery:如何形成查询字符串?

    我有以下代码 string query EventLogQuery elq new EventLogQuery Application PathType LogName query elq Session new EventLogSessi
  • Google Apps 脚本中的简单弹出窗口或对话框

    我正在寻找简单的代码 在我的 Google Apps 脚本 Ui 中添加一个弹出窗口 当我点击提交按钮时会出现该弹出窗口 弹出框将显示一条消息并有一个用于关闭弹出窗口的按钮 我已经看遍了所有地方 一切看起来都很复杂 而且做的事情比我需要做的
  • Jboss Fuse ESB 入门

    我是 ESB 新手 正在尝试了解 ESB 概念和实际用例 我研究了几个开源 ESB 产品 似乎 Apache Camel 是最有名的 一位 来自阿帕奇家族 我发现 大多数人使用在 Apache Camel 上开发的 Jboss Fuse 或
  • 焦点在 IE 中不起作用

    我有以下功能 function change var input document getElementById pas var input2 input cloneNode false input2 type password input
  • 本地主机的自签名 SSL 证书,如何使其可信

    我有一个 Owin 自托管 C 应用程序 它通过 127 0 0 1 5555 提供 Web API 服务 它只侦听本地主机 没有外部连接 这些 Web API 服务是使用 Ajax 从 AngularJS 应用程序调用的 顺便说一句 Ow
  • 使用 API 路由时,未授权时返回 Http Response 401,而不是重定向到登录页面

    我正在使用 MVC 和 WebAPI 构建一个 ASP NET Core 2 0 网站 以提供对一系列微服务的访问 WebAPI 控制器要求用户进行身份验证和授权 使用Authorize属性 任何未经授权或未登录的用户都会收到作为 MVC
  • Sun 的 Java 包命名约定:sun 与 com.sun

    在JRE中 Sun的内部包以2个顶级域 sun和com 为前缀 例如 com sun security jgss sun security jgss 对我来说 他们选择哪个前缀似乎很随机 我很好奇Sun 为此使用什么规则 不是问题的答案 但
  • 如何保证在粘贴之前参数完全宏展开?

    我有一个通用宏 define mSwitch Root Case Root Case Case define mSpecialDisplay what Val mSwitch mSpecialDisplay what Val define
  • Java可以连接通配符ssl吗

    我们希望购买通配符 SSL 证书 因为我们有很多子域 但是我不知道Java是否信任通配符证书 当人们通过 SSL 连接到我们的 API 时 我们不足以强制与我们通信的所有第三方将我们的 SSL 证书添加到他们的本地信任库中 目前 我面临着两
  • 使用Python获取pptx文件幻灯片的标题

    我正在尝试使用 Python 获取 powerpoint 文件的每张幻灯片的标题 我正在Python 中使用Presentation 包 但我找不到任何指定标题的内容 我有这段代码返回 powerpoint 文件的内容 但我需要指定标题 f
  • Angular 4 - 如何为 type='input' 渲染 2 位小数

    这个问题是关于当用户将数据输入数字类型的输入时限制 验证输入 我遇到的问题是 当模型首次加载时 任何整数或 1dp 的数字都仅以 1dp 渲染 例如 40 或 40 0 均显示为 40 0 而不是 40 00 我添加了此代码 以便在用户输入
  • AES 算法 - 解密问题

    我已经编写了AES解密代码 但没有成功 我的 AES 算法课程在这里 http pastebin com QtpFnW84和实施是 String Masterkey eX0XcsF8lkeX0XcsF8lkeX0XcsF8lkeX0XcsF
  • 用于 OpenGL ES 的多边形三角剖分为三角形带

    我正在寻找一个快速多边形三角剖分算法可以将不是很复杂的二维凹多边形 无孔 三角化为三角条准备发送到 OpenGL ES 进行绘图GL TRIANGLE STRIP 我知道一些算法 但我找不到适合我需要的算法 http www flipcod
  • SQLite 添加主键

    我使用 Sqlite 创建了一个表CREATE TABLE AS语法基于创建表SELECT陈述 现在这个表没有主键 但我想添加一个 执行中ALTER TABLE table name ADD PRIMARY KEY col1 col2 给出
  • 从 Kendo Grid 数据源导出所有数据

    我按照有关导出 Kendo 网格数据的教程进行操作 http www kendoui c om blogs teamblog posts 13 03 12 exporting the kendo ui grid data to excel
  • C# 8.0 使用 Range 表示多维数组

    在 C 8 0 中 为什么我可以在一维数组上使用 range var oneDim new int 5 var oneDimSlice oneDim 2 4 但不能在多维数组上使用它吗 var twoDim new int 5 5 var
  • EncryptedXml DecryptDocument 方法抛出“错误数据”异常

    我为加密 解密流编写了一个代码块 该代码在我的本地机器上运行 但是当我在网络上发布我的代码时 解密函数抛出 错误数据 异常 这是我的加密和解密函数 private static MemoryStream EncryptStream XmlD
  • 通过 Windows 10 控制台 VT-100 转义序列获取光标位置

    我正在尝试 Windows 10 控制台中对 VT 100 转义序列的新 有限 支持 支持的序列记录在https msdn microsoft com en us library windows desktop mt638032 v vs
  • Heroku SSL 端点出现问题

    我正在尝试向 Heroku 添加 SSL 证书 该证书是从 Network Solutions 购买的 我完成了所有步骤并创建了一个 csr 文件 将该文件上传到 NetworkSolutions 下载了他们的 crt 文件包 MYSITE
  • 如何在 JavaScript 中创建可链接函数?

    让我们想象一下这样的函数 function foo x x return x 它的用法如下 var x y x Notepad y foo x console log y Prints Notepad 我正在寻找一种方法来创建可与其他函数链