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

4 回复

我在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 引擎,某些全局原型修改可能被限制以保障应用稳定性。

建议改用以下方式实现数组转换功能,避免直接修改原型:

  1. arr2tree 封装为独立工具函数,通过参数传入数组。
  2. 在 Vue 组件中通过 computedmethods 调用该函数。

示例:

// 工具函数
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);
    }
  }
}
回到顶部