uni-app global对象的变化
uni-app global对象的变化
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 19041.630 | HBuilderX |
操作步骤:
- 使用hbuilder创建项目
预期结果:
console.log('global:',global);
global: : Window {window: Window, self: Window, document: HTMLDocument, location: Location, top: Window, …}
实际结果:
console.log('global:',global);
global: {isFinite: ƒ, Array: ƒ, Date: ƒ, Error: ƒ, Function: ƒ, …}
bug描述:
使用hbuilder创建项目
console.log('global:',global);
之前的项目输出是
global: : Window {window: Window, self: Window, document: HTMLDocument, location: Location, top: Window, …}
现在新建项目的输出是
global: {isFinite: ƒ, Array: ƒ, Date: ƒ, Error: ƒ, Function: ƒ, …}
是什么原因啊?我看之前的uni不是挂载的global的吗?现在挂在global的对象不能全局使用了。。。
更多关于uni-app global对象的变化的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app global对象的变化的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是uni-app框架升级后的正常变化。从HBuilderX 3.1.0版本开始,uni-app对global对象进行了重构,移除了浏览器环境的Window对象属性,改为标准的JavaScript全局对象。
变化原因:
- 标准化:新的global对象更符合ECMAScript标准,避免了在非浏览器环境(如小程序、App)中引用浏览器专有API导致的兼容性问题
- 跨端一致性:统一了各端的global对象实现,确保代码在不同平台表现一致
- 安全性:移除了可能引起安全风险的浏览器环境特定属性
影响范围:
window、document、location等浏览器特有属性不再挂载到global- 标准JavaScript全局对象(Array、Date、Function等)保持不变
- 原有的全局变量访问方式需要调整
解决方案: 如需访问浏览器环境API,请使用条件编译:
// #ifdef H5
console.log(window);
console.log(document);
// #endif
// 跨端推荐使用uni API替代
uni.getSystemInfo({...})
uni.navigateTo({...})

