为什么结果是一样的呢?

ycagri 2014-04-04 08:39:55

function stationObj() {
var stobj = new Object();

stobj.data1 = ""; //数据1
stobj.data2 = "";
stobj.data3 = "";

return stobj;
};

var a=[],b=[];
var obj = stationObj();
obj.data1="1";
obj.data2="2";
a.push(obj);
b.push(obj);

document.writeln(a[0].data2);
document.writeln(b[0].data2);

b[0].data2="250";
document.writeln(a[0].data2);
document.writeln(b[0].data2);



真是太怪异了,如何解决这个问题
...全文
124 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
嘻哈大咖秀 2014-04-04
  • 打赏
  • 举报
回复
ycagri 2014-04-04
  • 打赏
  • 举报
回复
找到方法了,可以用对象clone,谢谢
ycagri 2014-04-04
  • 打赏
  • 举报
回复
我现在知道是这个问题了,关键是现在如何解决这个问题
挨踢直男 2014-04-04
  • 打赏
  • 举报
回复
function stationObj() {
        var stobj = new Object();
        
        stobj.data1 = "";    //数据1
        stobj.data2 = "";
        stobj.data3 = "";
 
        return stobj;
    };
     
    var a=[],b=[];
    var obj = stationObj();
	var obj1 = stationObj();
    obj.data1 = obj1.data1 = "1";
    obj.data2 = obj1.data2 = "2";
    a.push(obj);
    b.push(obj1);
     
    document.writeln(a[0].data2);
    document.writeln(b[0].data2);
     
    b[0].data2="250";
    document.writeln(a[0].data2);
    document.writeln(b[0].data2);
你这前的push到a、b数组里的对象是同一个。 对象只有一个,通过引用访问它的, 其实你那两个数组里放的是两个引用 ,详细的知识你可以去网上找找, 这是编程的基础

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧