对不起,如果这是旧主题的转贴,但我确实搜索过,并且找不到类似的帖子。
以下这段代码是一个如何在我正在做的项目中进行javascript继承的示例,现在很遗憾,大多数最终用户都处于非常低内存的winXP + EI7设置中,所以我希望节省每一点我能记住的记忆。
现在我的问题是:我实际上是通过在构造函数的末尾设置params = null来保存任何内存,并且在我将window.namespace.MyClass.MySubclass指针分配给我之后,我应该对MyClass指针做同样的事情吗?相同的价值?
(function (window, undefined) {
var MySubClass = function (params) {
this.elements = {
// jQuery dom elements
};
this.vars = {
// vars
};
this.controls = {
// class instances
};
this.init(params);
params = null; // cleanup
};
MySubClass.prototype = new namespace.MyClass.Base();
MySubClass.prototype.init = function (params) {
// do stuff
params = null; // cleanup
};
MySubClass.prototype.add = function (item) {
// adds item to an internal collection
};
window.namespace.MyClass.MySubClass = MySubClass;
})(window);
答案 0 :(得分:0)
我很确定你没有 - 无论如何,变量超出了函数末尾的范围。当然,如果某人已经客观地对此进行了测试,那么欢迎任何确认或驳斥。
聚苯乙烯。另外,引用Donald Knuth:premature optimization is the root of all evil.即使你使用的技巧确实有一些影响,但几乎肯定不值得。
答案 1 :(得分:0)
设置params = null可能不会产生巨大的差异,但这不是一个糟糕的做法。
您可以使用提到的here工具来查找/清除内存泄漏。