我正在 ASP.Net 中创建一个 Ajax 客户端控件。通过从 IScriptControl 继承,然后添加相关的 javascript 类(将从 javascript 控件继承)。我在以下代码中发现了内存泄漏:
Type.registerNamespace("mynamespace");
myClass = function (element) {
myClass.initializeBase(this, [element]);
}
myClass.prototype = {
initialize: function () {
myClass.callBaseMethod(this, 'initialize');
var me = this;
$(document).ready(function () {
me._initializeControl();
me._hookupEvents();
});
},
dispose: function () {
//Add custom dispose actions here
myClass.callBaseMethod(this, 'dispose');
},
//...other code ...
_hookupEvents: function () {
var me = this;
var e = this.get_element();
$("#viewRates", e).click(function () {
me.openDialog();
});
},
//...other code...
myClass.registerClass('myClass', Sys.UI.Control);
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
_hookupEvents 是我的 javascript 文件中的一个函数。泄漏与 me.openDialog 行有关。如果我删除这条线,就没有泄漏。但是,我需要这一行才能从类中调用函数(我不能只在函数中使用“this”,因为它会引用按钮)。有一个更好的方法吗?或者也许我只需要调用 dispose 函数中的一些方法来清理这些东西?