2011-03-18 37 views
1

以下代碼是多餘的---同一個匿名函數出現三次。在Javascript中,我如何重構一些重複的匿名函數?

我該如何重構它?

$(".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

我會聲明函數:

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

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

你可以使用一個局部變量:

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

的好處是,你不污染全局命名空間(全局對象)。

如果您不介意,您可以定義一個全局函數。

+0

+1,但假設他已經閉合/函數內部運行,多餘的關閉是沒有必要的。 – 2011-03-18 01:22:17

1

聲明一個新的功能

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

然後將其設置爲回調:

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

你看我不是那個名字的粉絲,因爲缺乏p0rn相關的代碼。 – ChaosPandion 2011-03-18 01:20:38

+0

創建,調整大小和停止與pr0n無關? – Spikolynn 2011-03-18 01:21:48