为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

收到一只叮咚 2018-12-19 18:19:23
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不被改变,仅改变函数的内部变量,所以请问该怎么做呢
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

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}


查看完整回答
反对 回复 2019-01-09
  • 1 回答
  • 0 关注
  • 493 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信