分配新对象并保留引用?

时间:2015-09-14 22:00:00

标签: javascript typed-arrays

考虑一下:

var o = { a: 1 }

read(o);
write(o);
read(o);

function read(x) {
  console.log(x);
}

function write(x) {
  x = { a: 2 };
}

显然结果是:

Object { a=1 }
Object { a=1 }

write函数通过分配新对象来破坏对象的引用。有没有办法做到这两点 - 分配一个新对象并保持引用?我需要这个来连接两个Float32Arrays。据我所知,没有创建新的Float32Array就不可能连接它们。还是有一个?他们应该是快速的,但对我来说,如果我想要组合两个片段,我总是要创建一个新的,它看起来相当慢。但也许这是另一个问题。

2 个答案:

答案 0 :(得分:0)

这个怎么样:

function overwrite(x,y){
  for (var prop in y) {
    if( y.hasOwnProperty(prop) ) {
      x[prop] = y[prop];
    }
  }
}

示例:overwrite(o,{a:2});

答案 1 :(得分:0)

(ES6)要从一个数组中插入一个值,从任意索引开始,请尝试typed array set() method

// dest ... destination typed array
// scr ... array like object with elements to add
dest.set(src, dest.length);  // append src elements to dest typed array