粗解js链式函数

2023-12-26 08:58
文章标签 函数 js 粗解 链式

本文主要是介绍粗解js链式函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 链式调用
  • 链式函数

链式调用

在codewars里做到链式函数的题目(codewars:js实现5kyu:A Chain adding function)之前,如果在面试的时候面试官让我实现add(1)(2)(3)(4)= 10,我应该是一点头绪都没有,然后羞愧的说一句:不好意思这个我不怎么会…最后‘完美’的挂掉面试,over。

在了解过程中我发现,其实链式调用我用的还是挺多的,比如在jQuery中经常会用到 $('#div').show().find('a').hide().end().css('color','#fff')
那么它是怎么实现的呢,原理其实挺简单的,就是jQuery节点在调用API之后它都会返回这个节点自身,比如:

var Obj = {a: 1,func: function(){this.a += 1;return this},test:function(){this.a += 1return this}
}
Obj.func().test().func();
console.log(Obj.a);  //4

到这里,我算对js的链式调用有了一点了解。

链式函数

那么,先不考虑结果,我要让add(1)(2)(3)(4)能执行的话,每一个函数执行完都应该返回一个函数,并且是返回同一个函数,这样才能形成链式,所以我完成codewars的代码雏形是这样的:

function add (num) {// var sum = function(){return sum;}return sum
}

综合题目的意思,add(1)(2)(3)(4)=10是要把每一个调用函数传入的参数求和:

function add (num) {// var count = num;var sum = function(num2){count += num2;return sum;}return sum
}

最后最重要的一点就是,要输出求和的结果,也就是count的值。在这里最后能够正确输出10的原理是:sum是Function,当我们进行某些操作时会(比如判断相等时)会自动调用其valueOf方法,所以要重写它的valueOf方法,让其返回count。

function add (num) {// 1var count = num;var sum = function(num2){ // 2,3......count += num2;return sum}sum.valueOf = function(){return count  // return both a function and a value}return sum
}

真真小菜鸟一个,希望看到的大佬们觉得有不对的地方指教一下!!!

这篇关于粗解js链式函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/538793

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87