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指向。

0
0

yancy

2021-08-04

主要是为了传递参数

0
0

从0打造微前端框架,实战汽车资讯平台

专为2~5年前端工程师打造的架构能力提升课

781 学习 · 204 问题

查看课程