Я предпочитаю только использовать List<BusinessObject>
. Typedefing это просто добавляет ненужный шаблон к коду. List<BusinessObject>
определенный тип, это не просто никакой List
объект, таким образом, это все еще со строгим контролем типов.
, Что еще более важно, объявляя что-то List<BusinessObject>
облегчает для всех читающих код для сообщения то, что вводит, они имеют дело с, они не должны искать до фигуры, что BusinessObjectCollection
, и затем помните, что это - просто список. typedefing необходимо будет потребовать последовательного (ре) соглашение о присвоении имен, за которым все должны следовать для него, чтобы иметь смысл.
Вы можете создать замыкание и назначить i
локальной переменной замыкания. Затем переменной gid
будет присвоено значение i
в момент создания замыкания, а не при запуске функции.
for(var i=0; i<3; i++){
(function() {
var gid = i;
$('#tmpid'+i).click(function(){
alert(gid);
});
})();
}
Вы создали замыкание, в котором переменная «i» используется совместно несколькими обработчиками кликов.
Поскольку в Javascript нет области действия блока, вам нужно передать «i» новой функции, чтобы она была скопировано по значению в новый экземпляр:
function bindStuff(i) {
$('#tmpid'+i).click(function(e){
var gid = i;
alert(gid);
});
}
for(var i=0; i<3; i++){ bindStuff(i); }
Вот еще один похожий вопрос: Замыкание внутри циклов в JavaScript - простой практический пример
Я прочитал резервную копию собственного метода data () jQuery. Я реализовал это, и он тоже работает. Он скрывает некоторые фактические функции обработки замыканий,