You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript嵌套对象赋值疑问:如何通过指针变量替换整个对象?

JavaScript对象引用赋值问题解答

核心结论

没法让p = {currentTime:25, progress:10}这种赋值操作直接更新原数组里的对象,要么用完整路径替换元素,要么用其他方法修改原对象的属性。

原因解释

JavaScript里对象属于引用类型:

  • 当你执行var p = collectionData.progressData[x]时,p保存的是原数组中对应对象的引用地址,此时通过p修改属性(比如p.currentTime = 25),会直接作用于原对象,因为指向的是同一个内存地址。
  • 但执行p = {currentTime:25, progress:10}时,相当于给p重新分配了一个新对象的引用地址,和原数组里的对象彻底断开了关联,自然不会更新原数据。

可行的替代方案

  • 直接用完整路径替换元素:

    collectionData.progressData[x] = {currentTime:25, progress:10}
    

    这是最直接的方式,直接替换数组中对应位置的对象。

  • 用Object.assign覆盖原对象属性:

    Object.assign(p, {currentTime:25, progress:10})
    

    这个方法会把新对象的属性合并到p指向的原对象里,既不用写长路径,也能更新原数组中的数据。

  • 逐个修改属性:

    p.currentTime = 25;
    p.progress = 10;
    

    就是你已经在使用的方式,适合属性不多的场景。

内容的提问来源于stack exchange,提问作者Howard Parr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:40:37