请各位大侠解释一个困扰我的js问题 var data = {"a1" : {"b1": 33}};var abc = data.a1;alert(abc.b1);data.a1 = {"b1":44};alert(abc.b1);为什么两次输出都是33??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以把data.a1看作是指针,data.a1赋值后它只是指向了另一个地方,前一个对象的内容并没改变 你如果alert(data.a1)觉得不是33,你的abc 变量在你改变data.a1后未重新赋值当然还是33!!! var data = {"a1" : {"b1": 33}};var abc = data.a1;alert(abc.b1);data.a1 = {"b1":44};abc = data.a1;//注意alert(abc.b1);看来你的想法是这样的 A.B->CD->CA.B->E//D->C 这样用,结果就不同了.<script type="text/javascript">var data = {"a1" : {"b1": 33}};var abc = data;alert(abc.a1.b1); //33data.a1 = {"b1":44};alert(abc.a1.b1); //44</script>var abc = data.a1;这是值引用,只复制数据,没有关联关系.过后再改变data.a1但不对abc重新赋值,abc就仍然保持上次赋值时的数据.var abc = data; 这是地址引用或称指针引用,有关联关系.过后改变data.a1时,abc会随之反映出来.这个区别就是,对一个变量赋予对象则这个赋值是指针引用,而对一个变量赋予对象的属性时就是值引用. 这和通常见到的很类似:var obj = document.getElementById(id);之后你可以通过obj操作 document.getElementById(id)但如果是var obj = document.getElementById(id).value;之后obj只是此时document.getElementById(id)的value,一旦过后document.getElementById(id)的value发生变化,两者并不会自动对应. 很烦去掉发言人ID的采集器,补充上:上面二楼都是theforever_csdn所发. 想做一个图片的值班表,五天一个循环,循环已经写好,就是调用图片的问题! 如何在javascript前台遍历后台数据访问层得到的list集合 高分求救 自动填写表单数据并自动提交的问题 初学者jquery的ready函数覆盖问题 button 数组问题 关于exec JS事件 attachEvent addEventList这两个方法是window的方法吗 让下拉框里值等于VAR1的一项选中??? 为什么很多Javascript在苹果机上不能用??? 计数器怎么防止刷新就加1? "'"有什么用? 如何判断浏览器类型及版本
你的abc 变量在你改变data.a1后未重新赋值当然还是33!!!
var data = {"a1" : {"b1": 33}};
var abc = data.a1;
alert(abc.b1);
data.a1 = {"b1":44};
abc = data.a1;//注意
alert(abc.b1);看来你的想法是这样的
D->C
A.B->E
//D->C
<script type="text/javascript">
var data = {"a1" : {"b1": 33}};
var abc = data;
alert(abc.a1.b1); //33
data.a1 = {"b1":44};
alert(abc.a1.b1); //44
</script>var abc = data.a1;
这是值引用,只复制数据,没有关联关系.过后再改变data.a1但不对abc重新赋值,abc就仍然保持上次赋值时的数据.var abc = data;
这是地址引用或称指针引用,有关联关系.过后改变data.a1时,abc会随之反映出来.这个区别就是,对一个变量赋予对象则这个赋值是指针引用,而对一个变量赋予对象的属性时就是值引用.
之后你可以通过obj操作 document.getElementById(id)但如果是
var obj = document.getElementById(id).value;
之后obj只是此时document.getElementById(id)的value,一旦过后document.getElementById(id)的value发生变化,两者并不会自动对应.