在JavaScript中链接方法调用时,调用函数的顺序是什么?

时间:2013-10-01 15:12:23

标签: javascript chaining method-chaining

假设我有这一系列的电话:

var btn = $('#mybtn');
btn.addClass('is-active').text(btn.attr('data-alt-active'));

很明显addClass会在text之前被调用,但是btn.attr何时被调用?在调用text之前或整个链之前?

1 个答案:

答案 0 :(得分:0)

运行此:

<span id="mybtn" data-alt-active="Alternative text">Hello</span>

function aliasWrap(func, msg) {
    function _wrapped() {
        console.log(msg);
        return func.apply(this, arguments);
    }

    return _wrapped
}

$.fn._addClass = aliasWrap($.fn.addClass, 'addClass called');
$.fn._text = aliasWrap($.fn.text, 'text called');
$.fn._attr = aliasWrap($.fn.attr, 'attr called');

var o = $('#mybtn');

o._addClass('is-active')._text(o._attr('data-alt-active'));

在控制台中输出以下内容:

addClass called
attr called
text called

TL;博士;在链式方法调用内部调用的函数将在调用链式方法之前调用。