【Bug】Cocos Creator 3.2.1-3.3.0 惊天bug 官方请关注

输入下面代码
然后使用 模拟器 或者 真机 (我用安卓机器 复现了!)

   let modalObject = {
        useMask: true,
        title: "警告",
        content: "这个是提示内容,你懂懂",
        cancelLabel: "拒绝",
    };
    console.log("--keys-1-:" , Object.keys(modalObject));

    console.log("---1-:" , modalObject);
    console.log("--keys-2-:" , Object.keys(modalObject));
    console.log("---2-:" , JSON.stringify(modalObject));

结果 输出:

–keys-1-: (4) [“useMask”, “title”, “content”, “cancelLabel”, object_id: 3081, native_class_name: “[noname]”]0: "useMask"1: "title"2: "content"3: "cancelLabel"native_class_name: "[noname]"object_id: 3081length: 4__proto__: Array(0)
Test.ts:25 —1-: {useMask: true, title: “警告”, content: “这个是提示内容,你懂懂”, cancelLabel: “拒绝”, object_id: 3082, …}
Test.ts:26 --keys-2-: (6) [“useMask”, “title”, “content”, “cancelLabel”, “object_id”, “native_class_name”, object_id: 3083, native_class_name: “[noname]”]0: "useMask"1: "title"2: "content"3: "cancelLabel"4: "object_id"5: "native_class_name"native_class_name: “[noname]“object_id: 3083length: 6__proto__: Array(0)
Test.ts:27 —2-: {“useMask”:true,“title”:“警告”,“content”:“这个是提示内容,你懂懂”,“cancelLabel”:“拒绝”,“object_id”:3082,“native_class_name”:”[noname]”}

会 凭空 添加了 两个属性

导致 我在 遍历 对象的时候 多出了 两个 !!!

原因 我找到了 是 因为 这一行 导致的

  console.log("---1-:" , modalObject);

就是 用 逗号隔开的方式 输出了 对象

但是 这个 我相信 很多 开发者都在用。我自己搜索了一下

/Applications/CocosCreator/Creator/3.3.0/CocosCreator.app/Contents/Resources/resources/3d/engine-native/cocos/bindings/jswrapper/v8/Object.cpp

的 282行 左右

#if CC_DEBUG
this->_objectId = ++nativeObjectId;
this->setProperty("__object_id__", se::Value(this->_objectId));
this->setProperty("__native_class_name__", se::Value(cls ? cls->getName() : "[noname]"));
#endif

return true;


想问一下 官方 大佬 这个 是怎么回事 我应该如何解决 这个问题

我用 2.4.x 新建项目 不会 出现这个问题

希望 官方大佬 及时看到 给个解决方案,谢谢!

因为这个JS对象 是 作为参数 传给服务器 现在导致参数格式 错误 无法解决 !!

而且莫名其妙的多了字段 导致了 key 得到的length 变化 很不友好!

这个调试信息我们尽快去掉,在编译 的时候可以把预处理宏 CC_DEBUG 改为 0,或者使用 release模式编译就没问题

1赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。