cc.instantiate 克隆对象后,对象属性里面多了 _iN$t: null 这个键值对,导致遍历会出错,求教怎么去掉这个_iN$t这属性

  • Creator 版本:

  • 目标平台: web

  • 详细报错信息,包含调用堆栈:

  • 重现方式:

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:

  • 额外线索:

我也遇到了

提供下demo,我们看看,可能是属性命名的问题。

cc.instantiate(this.u_next) 复制一个正常使用的node 就有这个字段

在被复制的这个节点里面

遍历出了什么错?

就是在一个节点A的的一个脚本B里面有一个数组C,复制了这个节点A, 节点A的脚本B数组C里面多了一个_iN$t这个key,如果用for in 遍历就会这个key值,如果按数组处理这个就会出错

哦…… 数组是不能用 for in 的,应该用 for 循环

不是应该看看怎么多了一个key值么:joy:

克隆后属性不能新增 字段哈 就是 多了 _iN$t:null 这个键值对哈

这个是故意的,为了优化性能

什么情况下会出问题呢?

这个字段不能设为不可遍历么?

for (let i in node) {
    cc.log(node[i]);
}

你这样遍历试试

可以的,下个版本改一下。之前 Creator 刚研发时,Object.defineProperty 标准还没普及,而且性能很差(特别是在原生平台),所以就没有设置为不可枚举的。

1赞