不废话,直接上码:
function broadcast(componentName, eventName, params) {
this.$children.forEach(child => {
const name = child.$options.name;
if (name === componentName) {
child.$emit.apply(child, [eventName].concat(params));
} else {
broadcast.apply(child, [componentName, eventName].concat([params]));
}
});
}
然后就是关于 child.$emit.apply(child, [eventName].concat(params))
这一句,这句代码的意思就是找到要找的子组件后,调用它的$emit方法触发自定义事件,但是关于这个apply的用法我是没有看懂,child.$emit.apply(chlid),这不是跟child.$emit没区别吗?为啥不直接用child.$emit呢?还是说我对apply的用法有误解?
等价的 ES6 代码
为了兼容性啥的,不能用 ES6 代码,就要用
apply