Javascript:在闭包内使用的外部变量

时间:2013-04-01 14:58:24

标签: javascript closures

我有一个简单的jquery弹出插件。用法如下:

$("#popupContainer").popup({
    onOpen: function () { },
    onClose: function () { }
});
$("#popupContainer").popup("open", "/Home/PopupContent");
$("#popupContainer").popup("close");

这很好用。

但是,我想为不同的url传递不同的onOpen回调。所以我想在插件上创建一个包装器,如下所示:

var popupPlugin = {};
(function () {
    var onOpen = null;
    var onClose = null;

    $("#popupContainer").popup({
        onOpen: function () {
            if (onOpen) {
                onOpen();
            }
            onOpen = null;
        },
        onClose: function () {
            if (onClose) {
                onClose();
            }
            onClose = null;
        }
    });

    popupPlugin.open = function (url, callback) {
        onOpen = callback;
        $("#popupContainer").popup("open", url);
    }
    popupPlugin.close = function (callback) {
        onClose = callback;
        $("#popupContainer").popup("close");
    }
}());

// usage
popupPlugin.open("/Home/PopupContent", function () {
    // specific callback
});

这按预期工作(我现在有不同的回调),但我担心我会以某种方式创建内存泄漏。

popupPlugin包装器的实现是否良好?

0 个答案:

没有答案