浅说一下深拷贝和浅拷贝,如何自己实现一个深拷贝?

本文介绍了JavaScript中浅拷贝和深拷贝的概念,包括它们的区别(浅拷贝仅复制引用,深拷贝创建独立副本),实现方式(如Object.assign、Array方法和递归),以及注意事项,特别是关于循环引用和方法丢失的问题。

一、浅拷贝:

浅拷贝是指对于一个对象,仅仅是拷贝了它的引用而已,两个对象指向同一块内存地址。

实现方式:

  • Object.assign(target, source)
  • Array.slice()
  • Array.concat()

二、深拷贝:

深拷贝创建一个值和原始对象完全相同的对象,并且是两个不同的对象,修改其中一个对象不会影响另一个对象。

实现方式:

  1. JSON.parse(JSON.stringify(obj))

缺点:不支持函数、正则、Symbol、Date对象、undefined等类型的转换。

  1. 递归实现深拷贝

递归实现深度拷贝,判断属性值的类型,如果是引用类型就递归调用拷贝函数,直到全部拷贝完成。

实现代码:

 

注意事项:

  • 对象的循环引用需要特殊处理,否则会导致死循环。
  • 需要注意的是,拷贝过程中原对象中的方法将丢失,因为方法不能被序列化,所以 JSON.parse(JSON.stringify(obj)) 方式深拷贝不能用于拷贝带有方法的对象。
### 先进过程控制(APC)的基本概念 先进过程控制(Advanced Process Control, APC)是一种基于模型的过程控制方法,旨在提高复杂工业系统的性能效率。它通常用于处理具有强耦合、大滞后或多变量特性的动态系统[^1]。相比于传统的PID控制器,APC能够更好地应对复杂的工艺条件并优化整体操作。 APC的核心目标在于利用预测性自适应特性来减少波动、改善稳定性最大化产量的同时降低能耗成本。其基本组成包括但不限于多变量预估控制器(MPC),以及状态估计器等组件[^3]。 ### 工业自动化中的应用实例 #### 1. **石油炼化领域** 在石油化工行业中,APC广泛应用于蒸馏塔的操作优化中。通过实时调整温度、压力等多个参数,可以显著提升产品收率并维持质量标准一致。例如,在催化裂化装置(CCU)里实施MPC策略能有效平衡轻油产出比例与重质残渣处理能力之间的关系。 ```python import numpy as np from scipy.optimize import minimize def apc_optimization(params): # 定义目标函数 (简化版) yield_rate = params[0]*params[1] - params[2]**2 return -yield_rate # 寻找最大值需返回负数形式 initial_guess = [1.0, 1.0, 1.0] result = minimize(apc_optimization, initial_guess) print(f"Optimal parameters: {result.x}") ``` 此代码片段展示了一个简单的模拟案例,其中`apc_optimization`代表某种化学反应过程中影响产物得率的关键因素组合方式之一。 #### 2. **化工生产流程** 对于涉及多个串联或并联单元操作的大型化工厂来,采用APC可以帮助协调各阶段间的物料流动速率匹配问题,从而避免瓶颈效应的发生。比如聚乙烯聚合反应釜群之间切换时序安排就需要依赖精准的时间序列规划算法支持才能达到最佳经济效益社会效益双重目的[^3]。 #### 3. **钢铁冶金加工环节** 现代轧钢生产线普遍装备有高度集成化的计算机控制系统,其中包括了针对厚度尺寸精确调控方面的高级功能模块——即所谓的“张力平坦度联合闭环反馈机制”。这种特殊类型的APC方案不仅考虑到了当前时刻的实际测量偏差情况,还会前瞻性地考虑到未来可能产生的趋势变化方向及其幅度大小等因素综合考量之后再做出最终决定如何动作执行机构完成相应修正作业[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值