在 Javascript The Good Parts 中,它指出:
所以我希望下面的代码示例输出 1001,因为“对象永远不会被复制,而是通过引用传递”,那么它为什么输出 0000?
var page_item = {
id_code : 'welcome',
title : 'Welcome',
access_groups : {
developer : '0010',
administrator : '0100'
}
};
page_item.access_groups.member = '0000';
var member = page_item.access_groups.member;
member = '1001';
$('p#test').html(page_item.access_groups.member); //should be "1001" but is "0000"
添加:
@Gareth @David,谢谢,这就是我试图在此示例中展示的内容,有效:
var page_item = {
id_code : 'welcome',
title : 'Welcome',
access_groups : {
developer : '0010',
administrator : '0100'
}
};
var page_item2 = page_item;
page_item2.access_groups.developer = '1001';
$('p#test').html(page_item.access_groups.developer); //is '1001'
最佳答案
不要在 C++ 上下文中考虑按引用传递,因为它不一样。
var member = page_item.access_groups.member // Sets member to this value
member = '1001'; // Now sets it to another value
如果字符串上有一个方法改变了它们,那么这个:
member.removeLastLetter();
会改变page_item.access_groups.member
。但是,使用 =
您正在更改变量的引用,而不是它之前引用的对象
关于javascript - 为什么这个 Javascript 示例复制变量值而不是通过引用传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440872/