运行自定义函数 - settings.func不是函数

时间:2011-05-03 10:35:59

标签: javascript jquery

我编写了一个jQuery插件,我想像这样调用自定义函数...

(function($) {

    $.fn.testPlugin= function(options) {

        var settings = {
            func: null
        };

        if (options) {
            $.extend(settings, options);
        }

        settings.func();
    };

})(jQuery);

在这种情况下,我想运行doSomething函数。

$(document).ready(function(){       

    $('div').testPlugin({
        func: 'doSomething'
    });

});

function doSomething() {
    alert('hello');
}

我总是收到错误settings.func is not a function所以我不得不使用:

eval(settings.func+"()");

Intead of:

settings.func();

哪个不理想!我有什么想法得到这个?

1 个答案:

答案 0 :(得分:2)

因为您要将字符串分配给settings.func,而不是函数。字符串永远不会起作用,即使它们包含函数的名称。

函数是一等公民,但是,这意味着您可以像使用任何其他变量一样使用它们,将它们分配给变量或将它们作为参数传递给其他函数。变化:

$('div').testPlugin({
    func: 'doSomething'
});

$('div').testPlugin({
    func: doSomething
});

它应该有用。