Рефакторинг загрузки, чтобы добавить вторую функцию? Бонус: как насчет добавления вторых функций к переменным в целом? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть два вопроса в последовательности?

У меня есть два набора кода, который я рефакторинг. У каждого есть нагрузка.

Оба будут работать на сайте самостоятельно, но я не хочу, чтобы они перезаписывали загрузку друг друга.

Итак, у меня есть эквивалент:

window.onload=function(){ alert("foo")};

и

window.onload=function(){ alert("bar")};

в двух файлах.

Чтобы не перезаписывать одно назначение window.onload другого, я реорганизовал их следующим образом:

window.onload+=function(){ alert("foo")};

и

window.onload+=function(){ alert("bar")};

но тогда, похоже, ни один огонь.

И поскольку мне кажется, что это помогло бы мне понять ситуацию и, как правило, иметь приличный навык, как мне добавить дополнительные функции в переменную функции? (Это то же самое, что и с onload, или onload особый случай? Мне кажется, что это может быть особый случай.)

Так что, если бы у меня было ...

var Varrick = function(){ alert("Do the thing!");}

и у меня было

var Zhu_li = function (){ alert("Did the thing."); }

Какой будет эффективная команда

var Varrick = Varrick + Zhuli.

так ...

Varrick(); // Alerts "Do the thing!" then alerts "Did the thing."

Примечание. Я хочу сделать это, не полагаясь на jQuery.

1 Ответ

0 голосов
/ 29 июня 2018

Это одна из причин, по которой присвоение on- свойств часто не является хорошей идеей - если что-либо ранее существовало в этом свойстве, оно будет перезаписано, поэтому сработает только последний обработчик. (и не пытайтесь += функции друг к другу)

Попробуйте добавить DOMContentLoaded слушателей вместо:

function foo() {
  console.log('foo');
}
function bar() {
  console.log('bar');
}
document.addEventListener("DOMContentLoaded", foo);
document.addEventListener("DOMContentLoaded", bar);

как добавить дополнительные функции в переменную функции?

Если у вас есть , чтобы иметь только одного слушателя, просто вызовите обе функции в слушателе:

document.addEventListener("DOMContentLoaded", () => {
  foo();
  bar();
});

что похоже на

window.onload = function(){
  foo();
  bar();
};

(но, как правило, лучше использовать addEventListener)

...