javascript 中复制函数的两种形式

Two forms of a copy function in javascript

复制对象通常有两种方法。例如,使用 C 模型,一种方法是传回一个新对象,第二种方法是将数据写入现有 object/address。这里有两种在 JS 中模拟的方法:

function copy_array(arr) {
    // copy array and return existing array
    const cp = [];
    for(let i=0; i < arr.length; i++)
        cp[i] = arr[i];
    return cp;
}
function copy_to(arr, to_arr) {
    // copy to existing object
    // possible to write to a "reference object", something like `&to_arr`
    to_arr = []
    for(let i=0; i < arr.length; i++)
        to_arr[i] = arr[i];
    return to_arr;
const c = ['a','b','c'];
let arrc=copy_array(c);
const x=[];
copy_to(c, x);

是否可以通过这两种方式复制对象?或者无法复制到引用 object/address?

对于一个对象,您的操作方式基本相同,只是您使用 for (key in object) 来遍历 属性 个名称。

function copy_to(obj, to_obj) {
  for (let key in obj) {
    to_obj[key] = obj[key];
  }
  return to_obj;
}