在Javascript中,我如何重构一些重复的匿名函数?

时间:2011-03-18 01:14:08

标签: javascript refactoring

以下代码是多余的---同样的匿名函数出现三次。

我如何重构它?

$(".operation").resizable({
create: function(event, ui) {
    var width = $(".operation").width()
    $("#width span.text").text(width)
},
resize: function(event, ui) {
    var width = $(".operation").width()
    $("#width span.text").text(width)
},
stop: function(event, ui) {
    var width = $(".operation").width()
    $("#width span.text").text(width)
},
})

3 个答案:

答案 0 :(得分:4)

您可以使用本地变量:

     (function() {
       var f = function(event,ui) {
           var width = $(".operation").width()
           $("#width span.text").text(width)
       }
       $(".operation").resizable({
       create: f,
       resize: f,
       stop: f,
       })
    })()

好处是你不会污染全局命名空间(全局对象)。

如果您不介意,可以定义一个全局函数。

答案 1 :(得分:3)

我会声明函数:

function setWidth(event, ui) {
    var width = $(".operation").width();
    $("#width span.text").text(width);
}

$(".operation").resizable({
    create: setWidth,
    resize: setWidth,
    stop: setWidth,
});

答案 2 :(得分:1)

声明一个新函数

function xxx(event, ui) {
    var width = $(".operation").width();
    $("#width span.text").text(width);
}

然后将其设置为回调:

$(".operation").resizable({
    create: xxx,
    resize: xxx,
    stop: xxx
});