js实现链式调用的两种方式
作者:一二三
发布时间:2024-03-19 17:57
0人已阅读
简介: 链式调用class方式与function方式,总结返回this
console.log("js实现链式调用--------------start---------------"); /* * 提供了一个数组结构的 data,要求实现一个 query 方法, * 返回一个新的数组,query 方法内部有 过滤、排序,等操作, * 并且支持链式调用,调用最终的 execute 方法返回结果: *const result = query(list) * .where(item => item.age > 18) * .sortBy('id') * .execute(); * console.log(result); * * */ class Chainable{ constructor(value) { this.value = value } where(fun){ this.value = this.value.filter(item=>fun(item)) return this } sortBy(key){ this.value.sort((a1,a2)=>{ return a1[key] - a2[key] }) return this } execute(){ return this.value } } const chainaList = [ {id: 1,name: 'a'}, {id: 2,name: 'b'}, {id: 3,name: 'c'}, {id: 4,name: 'a'}, {id: 5, name: 'a'} ] const chainable1 = new Chainable(chainaList) console.log(chainable1.where((item)=>item.id>1).sortBy('id').execute()) function chainable2(value){ let list = value || [] return { where:function(fun){ list = list.filter(item=>fun(item)) return this }, sortBy:function(key){ list.sort((a1,a2)=>{ return a1[key] - a2[key] }) return this }, execute:function(){ return list } } } console.log(chainable2(chainaList).where((item)=>item.id>1).sortBy('id').execute()) console.log("js实现链式调用--------------end---------------");
写下您的评论...
评论