gpt4 book ai didi

javascript - javascript中的重复对象

转载 作者:数据小太阳 更新时间:2023-10-29 04:23:20 26 4
gpt4 key购买 nike

我看到了两种复制对象的方法

1.

var a={c:1}
var b=a;
alert(b.c);//alert 1

2.

var a={c:2};
var b={};
for (i in a)
{b[i]=a[i];}
alert(b.c);//alert 1

第一个比第二个短那么第二个例子的效率是多少?

最佳答案

在第一个版本中,您不需要复制/克隆对象,您只需对其进行额外引用:

var a = { a: 1 };
var b = a;
b.a = 2;

console.log(a.a); // 2;

要克隆一个对象,有许多库可以为您做到这一点:

var b = $.extend({}, a); // Make a shallow clone (jQuery)
var b _.extend({}, a); // Make a shallow clone (underscore.js)

var b = $.extend(true, {}, a); // Make a deep clone (jQuery);

或者你也可以自己做:
简单克隆:

var b = {};
var prop;

for (prop in a) {
b[prop] = a[prop];
}

深度克隆函数的草稿:

function deepClone(obj) {
var r;
var i = 0,
var len = obj.length;
// string, number, boolean
if (typeof obj !== "object") {
r = obj;
}
// Simple check for array
else if ( len ) {
r = [];
for ( ; i < len; i++ ) {
r.push( deepClone(obj[i]) );
}
}
// Simple check for date
else if ( obj.getTime ) {
r = new Date( +obj );
}
// Simple check for DOM node
else if ( obj.nodeName ) {
r = obj;
}
// Object
else {
r = {};
for (i in obj) {
r[i] = deepClone(obj[i]);
}
}

return r;
}

关于javascript - javascript中的重复对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13287297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com