js引用带来的问题
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,那就是一个潜在的内存泄露。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。