我想知道这是否可行:
// Suppose i have two object.
var a = {sample:1};
var b = {sample:9};
var ra = a; // Referenced
var rb = b; // Referenced
var rc = ra; // Referenced rc.
console.log(rc); // Output {test:1} => correct
ra = b; // Changed Reference of ra.
console.log(rc); // Output {test:1} => [...?]
// Logically rc output is correct since it retained the reference to object a
// But what I want is object b instead
// That is when: var rc = ra; its reference should point to variable ra, not to variable a;
var rd = ra = a; // Reset
ra = b;
console.log(ra); // {sample:9}
console.log(rd); // {sample:1} => but want{sample:9}
任何关于如何做到这一点的想法将不胜感激:)
答案 0 :(得分:0)
前两行创建两个对象并将其引用分配给变量a
和b
:
---------------
a -------------------------------> | {sample: 1} |
---------------
b -------------------------------> | {sample: 9} |
---------------
行ra = a
分配a
到ra
中存储的任何引用,所以现在ra
和a
指向同一个对象,同样适用于{ {1}}:
rb = b
/--------------------------\
| | ---------------
| a ----------------------\-> | {sample: 1} |
| ---------------
| b ------------------------> | {sample: 9} |<-\
| --------------- |
| |
ra -/ |
|
rb -------------------------------------------------/
表示rc = ra
指向rc
指向的任何内容:
ra
/--------------------------\
| | ---------------
| a ----------------------\-> | {sample: 1} |<----\
| --------------- |
| b ------------------------> | {sample: 9} |<-\ |
| --------------- | |
| | |
ra -/ | |
| |
rb -------------------------------------------------/ |
|
rc ----------------------------------------------------/
表示ra = b
现在指向ra
指向的对象:
b
现在,在记录 ---------------
a ------------------------> | {sample: 1} |<----\
--------------- |
b ----------------------/-> | {sample: 9} |<-\ |
| --------------- | |
| | |
ra ----------------------------/ | |
| |
rb -------------------------------------------------/ |
|
rc ----------------------------------------------------/
时,我们发现rc
指向rc
而不是{sample: 1}
。
因此,当将对象的引用分配给变量时,只有该变量发生变化(指向该对象)时才是不可能的,指向同一对象的其他变量保持不变。