重构onload以添加第二个函数?额外:一般情况下,如何向变量添加第二个函数?

lil*_*shu 0 javascript function onload

我按顺序有两个问题?

我有两组代码我正在重构.每个都有一个onload.

两者都将在一个站点上自行运行,但我不希望它们覆盖彼此的负载.

所以我有相同的:

window.onload=function(){ alert("foo")};
Run Code Online (Sandbox Code Playgroud)

window.onload=function(){ alert("bar")};
Run Code Online (Sandbox Code Playgroud)

在两个文件中.

为了避免一个人覆盖另一个的window.onload赋值,我将它们重构为:

window.onload+=function(){ alert("foo")};
Run Code Online (Sandbox Code Playgroud)

window.onload+=function(){ alert("bar")};
Run Code Online (Sandbox Code Playgroud)

但那时似乎既不会发生火灾.

而且因为它似乎有助于我了解情况并且通常只是一个不错的技能,我如何向函数变量添加其他函数?(它与onload相同,还是上传了一个特例?它让我感觉像是一个特殊情况.)

所以如果我有......

var Varrick = function(){ alert("Do the thing!");}
Run Code Online (Sandbox Code Playgroud)

我有

var Zhu_li = function (){ alert("Did the thing."); }
Run Code Online (Sandbox Code Playgroud)

什么会有效的命令

var Varrick = Varrick + Zhuli.
Run Code Online (Sandbox Code Playgroud)

所以...

Varrick(); // Alerts "Do the thing!" then alerts "Did the thing."
Run Code Online (Sandbox Code Playgroud)

注意:我想这样做而不依赖于jQuery.

Cer*_*nce 5

这就是为什么分配on-属性通常不是一个好主意的一个原因- 如果以前存在于该属性上的任何内容,它将被覆盖,因此只有最新的处理程序才会触发.(并且不要试图相互作用+=)

尝试添加DOMContentLoaded侦听器:

function foo() {
  console.log('foo');
}
function bar() {
  console.log('bar');
}
document.addEventListener("DOMContentLoaded", foo);
document.addEventListener("DOMContentLoaded", bar);
Run Code Online (Sandbox Code Playgroud)

如何向函数变量添加其他函数?

如果你到只有一个听众,然后就调用监听器两种功能:

document.addEventListener("DOMContentLoaded", () => {
  foo();
  bar();
});
Run Code Online (Sandbox Code Playgroud)

这就像

window.onload = function(){
  foo();
  bar();
};
Run Code Online (Sandbox Code Playgroud)

(但通常更好用addEventListener)