小程序中的App、Page、global三者的关系
场景
在某些场景下,我们需要覆盖App或Page做一些自定义处理,就像web开发中我们经常覆盖XMLHttpRequest对象一样。
global.App = function CustomApp(...args) { // 扩展逻辑... App(...args)} |
遇到的问题
如果未关闭“ES6转ES5”,以上的写法会报错“Maximum call stack size exceeded”
这个好理解,因为执行`App(…args)`时,App已经指向了`CustomApp`,是一个死循环。
但是,如果启用“ES6转ES5”,则不报错。
启用“ES6转ES5”之后,global是这样一个对象(不包含App、Page):
{ "process": { "env": {} }, "__core-js_shared__": { "versions": [{ "version": "2.5.7", "mode": "pure", "copyright": "© 2018 Denis Pushkarev (zloirock.ru)" }], "keys": { "IE_PROTO": "Symbol(IE_PROTO)_1.npx70g8i3j" }, "wks": { "toStringTag": "Symbol(Symbol.toStringTag)_2.npx70g8i3j", "iterator": "Symbol(Symbol.iterator)_3.npx70g8i3j", "species": "Symbol(Symbol.species)_4.npx70g8i3h" } }} |
疑问
1、为什么是否启用“ES6转ES5”,global对象不一致?
2、启用“ES6转ES5”之后,global对象不包含App、Page,那么App、Page指向谁(挂载在哪里)?
