JavaScript里面当对象引用做为函数参数传递时候,函数内的操作会被影响到作为参数的对象。

查看:130
本文介绍了JavaScript里面当对象引用做为函数参数传递时候,函数内的操作会被影响到作为参数的对象。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var detail = function (id_type,id) {
    require(['views/detail/detail.js'], function(page) {
        var detailPage = page;
        showPage(detailPage.view,'detailPage'+id);
        detailPage.init(id_type,id);
    });
}

我这样做page会被函数影响到,我希望是page不被改变,仅改变函数的内部变量,所以请问该怎么做呢

解决方案

var detailPage = page;

对象类型的复制是引用,两个对象指向同一个指针,改变其中一个,会影响另一个的值.
所以这里需要克隆,而不是赋值.

var page = {
    a: 1
};
var page2 = page;
page2.a = 10;
console.log(page);  // {a: 10}

var page3 = Object.assign({}, page);
page3.a = 100;
console.log(page);  // {a: 10}

这篇关于JavaScript里面当对象引用做为函数参数传递时候,函数内的操作会被影响到作为参数的对象。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆