Javascript变量参考

时间:2017-04-27 17:26:42

标签: javascript variables reference notation

我想知道这是否可行:

// 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}

任何关于如何做到这一点的想法将不胜感激:)

1 个答案:

答案 0 :(得分:0)

前两行创建两个对象并将其引用分配给变量ab

                                   ---------------
a -------------------------------> | {sample: 1} |
                                   ---------------
b -------------------------------> | {sample: 9} |
                                   ---------------

ra = a分配ara中存储的任何引用,所以现在raa指向同一个对象,同样适用于{ {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}

因此,当将对象的引用分配给变量时,只有该变量发生变化(指向该对象)时才是不可能的,指向同一对象的其他变量保持不变。