在JavaScript中创建对象的克隆
在JavaScript中在JavaScript中创建对象的克隆,javascript,Javascript,在JavaScript中 var arr = [1, 2, 3, 4, 5]; var arr2 = arr.slice(); 如果arr值更改,则arr2不会更改。即,arr[0]=0;,仍然arr2[0]==1;//对 考虑这一点: var obj = {name: 'John', company: 'XYZ'}; var obj2 = obj; // Creates a duplicate of obj 但是obj.name='Dave',也会使obj2.name='Dave' 如何对
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.slice();
如果arr值更改,则arr2不会更改。即,arr[0]=0;,仍然arr2[0]==1;//对
考虑这一点:
var obj = {name: 'John', company: 'XYZ'};
var obj2 = obj; // Creates a duplicate of obj
但是obj.name='Dave',也会使obj2.name='Dave'
如何对对象执行切片操作?要克隆不包括函数和原型的对象,应使用结构化克隆 对于node.js,我已经找到了,但是我不能告诉您它是否好 对于浏览器,您可以使用此异步克隆功能,这取决于postMessage的正确实现:
function clone(obj, callback) {
var from = window.location.origin;
var wrapper = {'__clone__': true};
wrapper.__data__ = obj;
var listener = function(e) {
if(e.origin === from && e.data.__clone__) {
callback(e.data.__data__);
window.removeEventListener('message', listener);
}
};
window.addEventListener('message', listener);
window.postMessage(wrapper, from);
}
结构化克隆支持:
原语
新字符串、新布尔值、新数字
新日期
新正则表达式
新斑点
新文件
新文件列表
新阵列缓冲器
打字机
图像数据
阵列
普通物体
地图
设置
这是许多问题的重复。答案取决于你想要的是深度的还是浅层的。使用网站搜索。