为了账号安全,请及时绑定邮箱和手机立即绑定

函数末尾return this 实现链式调用的原理是什么

函数末尾return this 实现链式调用的原理是什么

波斯汪 2019-03-07 13:08:43
想知道为什么return this 之后就能实现链式调用,每一次的this都指向了哪?
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

手写了一个小计算器,可以理解一下


calc = {

    i: 0,

    init(n) {

        this.i = n;

        return this;

    },

    add(n) {

        this.i += n;

        return this

    },

    minus(n) {

        this.i -= n;

        return this

    },

    multiply(n) {

        this.i *= n;

        return this

    },

    result() {

        return this.i

    }

}

https://img1.sycdn.imooc.com//5c89b6ea0001d0b204810047.jpg


由于this总是返回调用当前函数的对象,因此当我们把函数封装在对象中时,在函数中return this时返回的是当前调用这个函数的对象,在上例中返回的就是calc对象。


又因为calc对象中又包含了多个函数,因此可以继续调用下去。只要函数中返回的是this,这个链式调用就可以一直进行下去~


查看完整回答
1 反对 回复 2019-03-14
?
动漫人物

TA贡献1815条经验 获得超10个赞

你通过当前对象实例调用,那么this就是当前对象,当然对象包含它的方法,return this 后那么还是当前对象,自然可以链式调用当前对象的其他方法。

在JavaScript中对象是作为引用被传递的。所以你可以让每个方法都传回对象的引用。 
如果让一个类的每个方法都返回this值,那么它就成了一个支持方法的链式调用的类。


查看完整回答
反对 回复 2019-03-14
  • 3 回答
  • 0 关注
  • 847 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信