js实现链式调用的两种方式
作者:一二三
发布时间:2024-03-19 17:57
0人已阅读
简介: 链式调用class方式与function方式,总结返回this
console.log("js实现链式调用--------------start---------------");
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---------------");