Object.defineProperty(Object.prototype, '__root', { get() { let obj = {} obj.print = functon(msg){ console.log(msg) } return obj }, configurable: false, enumerable: false }) // 使用 // __root.print('hello world')
小程序如何挂载一个类似 wx 这样的全局对象?背景 想做一个类似 pollyfill 的通用方法,以兼容微信、支付宝、百度小程序三者的 API 调用,因为三者之间部分 API 是有细微区别的。 不想每次都改一遍,然后有些转换工具转化效果还是不够理想,自己用 Gulp 写的脚步也不能完全兼容。 如果写了 pollfill 的话,也方便统一管理、维护。 想法 & 不足 将其挂载到 global 对象或者导出 ESM 模块,但是这种方式仍需要在使用之前,先引入。 求助 有没有一个方法可以直接调?像 wx 这个对象,我们可以在任何地方随时调用。例如 wx.chooseImage。 比如我将 mini 作为自定义的全局对象, 然后也想在任何地方通过 mini.xxx 来调用,如 mini.chooseImage 其他思路 看过别人一方法,可真机上不行,因为在真机上 this 为 undefined,如下: Object.defineProperty(Object.prototype, '__root', { get() { if (this && this.App === App) { return this } }, configurable: false, enumerable: false }) // 使用 // __root.xxx
2021-04-09