当前位置: 首页 > java >正文

Object.assign 浅拷贝

代码分析

javascript

复制

下载

this.events = Object.assign({onError: (evt) => {},onOpen: (evt) => {},onClose: (evt) => {},},{onError: (evt) => {console.log("Websocket 连接失败回调方法");},onOpen: (evt) => {this.updateSocketStatus(true);},onClose: (evt) => {this.updateSocketStatus(false);},}
);

浅拷贝对方法的影响

  1. 方法会被正确拷贝

    • Object.assign 会按照从右到左的顺序合并属性

    • 同名属性会被后面的对象覆盖

    • 方法作为函数对象会被复制引用(浅拷贝)

  2. 实际效果

    • 最终 this.events 会包含:

      • onError: 带有 console.log 的版本

      • onOpen: 调用 this.updateSocketStatus(true) 的版本

      • onClose: 调用 this.updateSocketStatus(false) 的版本

  3. this 绑定问题

    • 箭头函数会保留定义时的 this 绑定

    • 如果你的回调需要使用当前对象的上下文,箭头函数是合适的

    • 如果使用普通函数,需要注意 this 绑定问题

浅拷贝的局限性

虽然方法会被正确复制,但需要注意:

  • 复制的是函数引用,不是函数定义本身

  • 如果源对象中的方法引用了外部变量,这些引用会被共享

  • 对于复杂对象(如包含嵌套对象),只有第一层会被复制

http://www.xdnf.cn/news/2731.html

相关文章:

  • 算法思想之哈希表
  • NVIDIA新模型DAM-3B:描述一切,图像视频局部描述新突破
  • 如何设置端口映射?内网IP映射到外网访问,附无公网ip端口映射工具方法
  • DrissionPage采集京东系列——自动化登录
  • 【数据可视化-41】15年NVDA, AAPL, MSFT, GOOGL AMZ股票数据集可视化分析
  • JS错误处理的新方案 (不使用try-catch)
  • 奥威BI+AI数据分析解决方案
  • 30分钟上架鸿蒙原生应用,即时通信IM UI组件库全面适配HarmonyOS 原
  • 前后端分离: vue3+SpringBoot+ElementPlus+Axios+MyBatisPuls
  • linux离线安装zsh
  • C++ 嵌套类 (详解 一站式讲解)
  • Docker 容器虚拟化技术和自动化部署
  • FDA会议类型总结
  • openGauss新特性 | DataKit支持PostgreSQL到openGauss的迁移能力
  • Matplotlib练习代码
  • CentOS 7环境配置DHCP服务器
  • 【软件工程】面向对象编程(OOP)概念详解
  • 【神经网络与深度学习】五折交叉验证(5-Fold Cross-Validation)
  • 新一代质量管理QMS系统,产品质量全追溯
  • 除了Object.freeze(),JavaScript中还有哪些优化性能的对象限制方法?
  • 如何定义命名空间
  • STM32的Flash映射双重机制
  • x-cmd install | Orbiton:极简至上的终端文本编辑器与轻量级 IDE
  • 高性价比手机如何挑选?
  • 复合模式(Composite Pattern)
  • 佛山大旺高新区3650 M5 ERP服务器维修案例
  • 在 Conda 中,包的安装路径在电脑的哪里
  • IIS服务器提示ERR_HTTP2 PROTOCOL ERROR解决方案
  • 在 Spring Boot 中实现异常处理的全面指南
  • 【广州华锐视点】AR 远程协同:突破时空限制的利器