globalEvent.apply(this, arguments) 这个代码是起什么作用的呢?
来源:5-4 微前端框架 - 路由拦截

特别平凡的人
2021-07-30
export const patchRouter = (globalEvent, eventName) => {
return function() {
const e = new Event(eventName);
window.dispatchEvent(e); // 自定义事件
globalEvent.apply(this, arguments);
};
};
globalEvent.apply(this, arguments); 这段代码有和没有不是都能触发名为 eventName 的事件吗?
写回答
2回答
-
慕无忌6277495
2023-06-11
因为,每次触发patchRouter()执行时,本应该触发的是,globalEvent这个参数指代的系统方法,即:
window.history.pushState() 或 window.history.replaceState()
因为我们通过赋值的方式,用patchRouter()代替了原来的这两个系统方法,目的是能在触发这两个方法时发送一个自定义事件。
但是我们不能因为要发送一个自定义事件,就把原本的系统方法直接屏蔽掉了,所以在该方法体内通过globalEvent.apply(this, arguments);执行原来本该触发执行的系统方法。applay在这里是为了给其传参和设置this指向。
00 -
yancy
2021-08-04
主要是为了传递参数
00
相似问题