深克隆在JavaScript中打字阵列
试图深入克隆数组缓冲区(即,不通过参考,通过值传递)
const deepClone = (buf) => {
uint32 = new Uint32Array(buf);
let newBuf = new ArrayBuffer(buf.byteLength);
let uint32new = new Uint32Array(newBuf);
// This works fine
uint32.forEach((el, i) => {
uint32new[i] = el;
});
// but this doesn't
uint32new = uint32.map((el) => {return el});
// neither does this
uint32new = [...uint32];
return newBuf;
};
后2仅返回一个空的(0)缓冲区,
为什么?
Trying to deep clone an array buffer (i.e, pass by value not by reference)
const deepClone = (buf) => {
uint32 = new Uint32Array(buf);
let newBuf = new ArrayBuffer(buf.byteLength);
let uint32new = new Uint32Array(newBuf);
// This works fine
uint32.forEach((el, i) => {
uint32new[i] = el;
});
// but this doesn't
uint32new = uint32.map((el) => {return el});
// neither does this
uint32new = [...uint32];
return newBuf;
};
The latter 2 merely return an empty (0's) buffer
why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论