如何解决不使对象指针相同的正确方法
我想将一个对象分配给另一对象以更改一个对象,并且仍然保持原始对象不变。由于这两个对象在存储中只有一个,并且有两个指针指向该对象,因此不起作用。如何使用不同的指针但值相同的对象。
正确的做法是什么?
$(document).ready(function(){
var object1 = new theObject("hello");
var object2 = new theObject("hello again");
object1 = object2;
object1.value = "newValue";
// object1.value = "new Value"
// object2.value = "new Value" //should be "hello again"
alert("object1: " + object1.value + " object2: " + object2.value );
});
class theObject{
constructor(value){
this.value = value;
}
}
这可以工作,但是如果您有一个返回值是一个对象,它就不太好了
var objKeys = Object.keys(object1);
for (let objKey of objKeys){
object1[objKey] = object2[objKey];
}
解决方法
如果对象仅包含字符串/数字,则深度克隆对象的最防弹方法可能是:
var object2 = JSON.parse(JSON.stringify(object1));
请记住,如果它包含字符串/数字以外的值,则会将其字符串化。
,您可以克隆它,而不是将object2
的引用分配给object1
。例如:
class theObject {
constructor(value) {
this.value = value;
}
clone() {
return new theObject(this.value);
}
}
var object1 = new theObject("hello");
var object2 = new theObject("hello again");
object1 = object2.clone();
object1.value = "newValue";
console.log("object1: " + object1.value);
console.log("object2: " + object2.value);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。