在 Javascript好的部分中,它声明:
所以我希望以下代码示例输出 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'
答案 0 :(得分:4)
不要想到C ++上下文中的pass-by-reference,因为它不一样。
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
。但是,使用=
,您正在更改变量的引用,而不是之前引用的对象
答案 1 :(得分:1)
因为page_item.access_groups.member
是字符串而不是对象。
答案 2 :(得分:0)
这可能会受到JS-Gurus的影响,但基本上就是这样:
通过引用传递对象 字符串(数字等......基本上是1维变量)按值传递。
我确实尝试了解有关数据类型的冗长解释,但我认真地需要完成一些工作,并且没有时间仔细研究它。