[Vue] mixins 混入函数重载后调用原函数
可能有这么个情况:
// a.js export default { ... methods: { hello() { console.log('hello, a') } }, ... }
在 b.js 中混入 a.js
// b.js import a from 'a.js' export default { ... mixins:[a], methods: { hello(msg) { console.log('hello, b', msg) } }, ... }
那么,怎么在 b.js 中调用 a 的 hello 方法呢? 这类似于继承时调用父类的同名函数。
解决问题:
// b.js import a from 'a.js' export default { ... mixins:[a], methods: { hello(msg) { console.log('hello, b', msg) this._super_hello(msg) }, // 这样子写 _super_hello(...args) { return a.methods['hello'].call(this, ...args) }, }, ... }
意义
这么做有什么意义?
就说一个吧。使用上面的方法,可以用来修改一些js库或组件的行为。因为,上面的方法实际上就是一个 HOOK,没错,它和曾经的那些 API HOOK
没什么两样。安装一个钩子,干点自己的事,再调用原来的实现,就可以实现特定的功能了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧