uni-app中App使用 Array.prototype.xxx 无效
uni-app中App使用 Array.prototype.xxx 无效
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 19042.804 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:19042.804
HBuilderX类型:正式
HBuilderX版本号:3.1.2
手机系统:Android
手机系统版本号:Android 10
手机厂商:OPPO
手机机型:k5
页面类型:vue
打包方式:云端
示例代码:
Object.defineProperty(Array, "arr2tree", {
value(v = 0, k = 'pid', fk = 'id', c = 'children') {
return method.arr2tree(this, v, k, fk, c, true);
}
});
或
Array.prototype.arr2tree = function (v = 0, k = 'pid', fk = 'id', c = 'children') {
return method.arr2tree(this, v, k, fk, c, true);
};
更多关于uni-app中App使用 Array.prototype.xxx 无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我在app上也是有问题的,在app上时添加在原型上的方法,vue实例中data的array无法使用, h5可以正常使用
更多关于uni-app中App使用 Array.prototype.xxx 无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
遇到了同样的问题,没人解决吗?
没办法了.只能通过class解决了.
在 uni-app 的 App 环境中,直接扩展 Array.prototype
或使用 Object.defineProperty
修改全局 Array 构造函数可能因 JavaScript 引擎差异或框架限制而失效。uni-app 在 Android 端通常使用 V8 或 JavaScriptCore 引擎,某些全局原型修改可能被限制以保障应用稳定性。
建议改用以下方式实现数组转换功能,避免直接修改原型:
- 将
arr2tree
封装为独立工具函数,通过参数传入数组。 - 在 Vue 组件中通过
computed
或methods
调用该函数。
示例:
// 工具函数
export function arr2tree(arr, rootValue = 0, pidKey = 'pid', idKey = 'id', childrenKey = 'children') {
// 实现树形转换逻辑
return transformedTree;
}
// 在组件中使用
import { arr2tree } from '@/utils/helper';
export default {
data() {
return { flatArray: [] };
},
computed: {
treeData() {
return arr2tree(this.flatArray);
}
}
}