猿问

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不被改变,仅改变函数的内部变量,所以请问该怎么做呢

收到一只叮咚
浏览 494回答 1
1回答

慕运维8079593

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}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答