首页 > 代码库 > js引用带来的问题

js引用带来的问题

下面的例子用js举例,到其他语言,比如python也是一样。
var Example = funcion() {
this.table = {};
}


Example.prototype.getTable = function() {
return this.table;
}






var ex1 = new Example();


var table = ex1.getTable();
table.push(‘value1‘); 


var table = ex1.getTable(); 
getTable方法返回的是一个引用,下一句,table.push(‘value1‘)就偷偷修改了ex1对象内部值


好处: 可以不用做那么多复制动作,对程序性能是有好处的。
坏处: 上面的代码已经说明了,var table值可能会被你意想不到的地方修改掉,很隐晦,你没办法控制。






再说一个引用的具体的坏处。
var list = [];
var table =  ex1.getTable();
var list.push(table);
ex1没有引用后,ex1对象就被系统回收了,但是table的却没有销毁,一直在list中,如果list忘记删除table,那就是一个潜在的内存泄露。

js引用带来的问题