关于Vue事件传参中对象含click函数属性的技术疑问
问题1:为何click函数可以作为该对象的属性?
在JavaScript里,函数是一等公民——简单说就是函数能像字符串、数字这类基础值一样,赋值给变量、对象属性,甚至当作参数传递。所以把箭头函数直接赋值给对象的click属性,是完全合法的语法,没有任何问题。
问题2:这一写法的含义是什么,后续该如何使用这个函数?
写法含义:
这里用箭头函数定义了一个回调逻辑,核心作用有两个:- 箭头函数会保留当前组件的
this上下文(也就是触发$emit的那个组件实例),避免后续调用时this指向混乱; - 预先把
file参数绑定好,后续调用这个函数时不需要再额外传参。
本质就是给这个通知弹窗绑定了“点击后要执行的动作”——用户点击通知时,就会触发当前组件的unselect方法,并传入对应的file。
- 箭头函数会保留当前组件的
后续使用方式:
在监听notification-alert事件的地方(比如全局通知组件或父组件),会接收到这个包含click属性的对象。当用户点击通知元素时,直接调用这个click函数即可:// 监听事件的示例代码 this.$root.$on('notification-alert', (alertData) => { // 先渲染出通知弹窗 const notificationElement = renderNotification(alertData.text, alertData.type); // 给弹窗绑定点击事件 notificationElement.addEventListener('click', () => { // 执行传入的click回调 alertData.click(); }); });这样用户点击通知时,就会触发原组件里
this.unselect(file)的逻辑。
内容的提问来源于stack exchange,提问作者hai wayl
相关产品推荐
相关产品推荐

