如何理解链式调用?

首先在一个简单函数里:

var fun1 = function() {

     return {}
}

在这个返回的对象里现在有两个函数:

var fun1 = function() {

            return {
                fun2 : function() {
                    console.log(2);
                },
                fun3 : function() {
                    console.log(3);
                }
            }
        }

要调用里面的fun2或fun3就要先获得这两个方法所在的对象,而这个对象又是fun1函数的返回值,我们要做的就是调用fun1函数,得到的返回值就是那个对象,正常的函数调用是这样的:

var obj = fun1();
        obj.fun2();
        obj.fun3();

链式调用是这样的:

obj.fun2().fun3()

这种能在调用fun2后立即调用fun3函数,就需要fun2函数的返回值是一个对象

因为只有对象才可以调用里面的函数

fun2和fun3函数的宿主对象都是obj,只要让fun2的返回值变成obj就可以了,那如何变呢?

只要用this关键字就可以,因为this关键字永远指向当前函数的调用者,这里的调用者是obj。

所以只要在两个函数末尾返回this 关键字就可以了:

var fun1 = function() {

            return {
                fun2 : function() {
                    console.log(2);
                    return this;
                },
                fun3 : function() {
                    console.log(3);
                    return this;
                }
            }
        }

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值