如何将jQuery函数作为另一个函数的参数传递?

时间:2015-03-06 18:16:29

标签: javascript jquery function monads

我想创建一个函数,它将一个函数作为参数(另一个函数)并返回带有参数的函数,这些参数将应用于第一个函数。

像这样的monadic想法:

function creator(fun) {
    return function (arg) {
        fun(arg);
    };
}

$(function () {
    var printer = creator(alert);
    printer("foo bar");
})

问题是我不能谷歌或弄清楚如何用jQuery函数做同样的事情:

function show_and_change(fun) {
    return function (el, attr, value) {
        console.log(el.fun(attr)
        el.fun(attr, value);
    }
}

$(function () {
    var my_mod = show_and_change($.fn.attr);
    my_mod($("#one"), "foo", "bar2");
})

1 个答案:

答案 0 :(得分:1)

el.fun将真正尝试访问fun上的属性el(不存在)。相反,您想要调用fun(就像您在第一个示例中所做的那样),还要将其this值设置为jQuery对象:

fun.call(el, attr, value);

详细了解.call.apply