链式调用的核心就在于调用完的方法将自身实例返回。
1)示例一
function Class1(){
console.log('初始化')
}
Class1.prototype.method = function(param){
console.log(param)
return this
}
let c1 = new Class1()
c.method('第一次调用').method('第二次调用')
2)示例二
var obj = {
a: function(){
console.log('a')
return this
},
b: function(){
console.log('b')
return this;
}
}
- 示例三
class Math(){
constructor(value){
this.hasInit = true
this.value = value
if(!value){
this.value = 0
this.hasInit = false
}
}
add() {
let args = [...arguments]
let initValue = this.hasInit ? this.value : args.shift()
return new Math(value)
}
minus() {
let args = [...arguments]
let initValue = this.hasInit ? this.value : args.shift()
const value = args.reduce((prev, curv)=>prev-curv, initValue)
return new Math(value)
}
}
let test = new Math()
const res = test.add(222, 333, 444).minus(333, 222)
4)示例四
Number.propty.add = function() {
let _that = this
_that=[...arguments].reduce((prev, curv)=>prev+curv, _that)
return _that
}
Number.propty.minus = function() {
let _that = this
_that=[...arguments].reduce((prev, curv)=>prev-curv, _that)
return _that
}
let num = 0
let newNum = num.add(222, 333, 444).minus(333, 222)
console.log(newNum)