首页 > 代码库 > 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,那就是一个潜在的内存泄露。
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引用带来的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。