javascript函数链式调用原理

链式调用

大家都知道链式调用能够让代码更简洁易读,一般用于批量数据的多次复杂处理。
关于它的实现原理一般有两种方式:

1.构造函数的实例方法或原型方法执行完后 return this

function Person() {
  this.run=function () {
     console.log('run')
     return this // 返回调用run方法的对象自身 
   }
   this.stop=function () {
     console.log('stop')
     return this
   }
 }
const xx = new Person()

如果你想先调用run,再调用stop,不用写成下面这样

xx.run()
xx.stop()

而是可以写成

xx.run().stop()

2.普通函数执行完后 return 函数自身

最简单的例子:

let val = 1
const fun = function () {
	console.log(val)
	val++
	return fun
}			

console.log(fun()()()()()()) 
// 1
// 2
// 3
// 4
// 5
// 6

看到这个函数之后有没有觉得很像递归函数

递归函数是通过调用自身实现的一种迭代方式,必须写函数退出条件。
链式调用函数也是调用自身,更像是一种可控的递归函数,写多少个(),它就执行多少次。
这么一说,链式调用函数更更像是一种迭代器函数。

看下面的例子

function iterate(arr) {
	let index = 0
	const fun = function () {
		arr[index] = arr[index]*2  //对参数arr进行迭代处理
		index++
		return fun
	}
	
	fun.stop = function () {  //中止迭代的静态方法
		return arr
	}
	
	return fun
}

console.log(iterate([1,2,3])()()().stop()) // [2, 4, 6]

上面的代码实现了一个跟for循环类似的功能,可以对数组执行迭代操作。
当然靠写一堆()去迭代,代码就没法读了,还要去查数,看看到底迭代了多少次。。。
所以链式调用可以理解为,明确知道要迭代多少次,并且次数不会太多时,使用起来就会好看很多。

总结

当你读一些源码时看到 return this
或者 return 函数自身 的时候。
不要慌,通常就是个链式调用。
欢迎来我的b站空间逛逛
https://space.bilibili.com/395672451

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值