如何在js函数中保留一份全局变量的值,该值不随全局变量而变化

mmfmfc 2015-12-06 09:07:40
var v = {a:4,b:3};
function foo()
{
var v1= v;
foo1();
}
function foo1(){
v.b =2;
}
foo();
alert (v); // 空白


我想v1保留v最开始的值v1={a:4,b:3};,但是运行结果是v1跟着v一起变化,请问我该怎么写
...全文
501 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmfmfc 2015-12-07
  • 打赏
  • 举报
回复
已试过,谢谢
xiaoxiangqing 2015-12-07
  • 打赏
  • 举报
回复
用new来处理吧
杨小事er 2015-12-06
  • 打赏
  • 举报
回复
v是全局变量,你在函数体里var v1=v; 只是把v1这个局部变量的引用指向了v,v改变了 v1肯定也会改变,而且v1是局部变量,在foo()函数之外,v1 还不会被访问到。 1楼的回复是有效的,也就是声明全局变量的时候要用到this来声明他的属性。
豪情 2015-12-06
  • 打赏
  • 举报
回复
用console.log测试,在F12控制台看结果。

var v = {a : 4, b : 3};
function foo() {
    var v1 = v;
    foo1();
}
function foo1() {
    v.b = 2;
}
foo();
console.log(v);
似梦飞花 2015-12-06
  • 打赏
  • 举报
回复

function V(){
        this.a=4;
        this.b=3;
    }
    var v = new V();
    function foo()
    {
        var v1= new V();
        foo1();
        alert (v.b);
        alert(v1.b);
    }
    function foo1(){
        v.b =2;
    }
    foo();
或者复制 但如果对象里边还有对象的话需要深度复制

87,904

社区成员

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

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