JavaScript里面当对象引用做为函数参数传递时候,函数内的操作会被影响到作为参数的对象。
本文介绍了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屋!
查看全文