0

最近,我在编写 JavaScript 时对它知之甚少。

这是我今天早上写的第一个 javascript 代码。

$(window).load(function(){
    SubMenuHandler.init();
});

var SubMenuHandler = {
    init : function() {
        $("#statisticManager, #deviceManager, #policyManager").click(
            function(event) {
                var url = SubMenuHandler.getUrlFromEvent(event); // <-- These two
                SubMenuHandler.redirectPage(url);                // <-- lines
            }
        );
    },
    redirectPage : function(url) {
        $(location).attr("href", url);
    },
    getUrlFromEvent : function(event) {
        var target = event.target;
        var url = $(target).data("url");
        return url;
    }
}

如您所见,SubMenuHandler在类中被递归调用。

但是,我看不出这是怎么做到的。根据我使用其他语言的经验,它们通常使用this关键字而不是使用类的全名,除非在访问静态变量时。

是否有类似或更好的方法来完成这项工作?

4

1 回答 1

3
init : function() {
    var me = this; // <----- this is the magic
    $("#statisticManager, #deviceManager, #policyManager").click(
        function(event) {
            var url = me.getUrlFromEvent(event);

            me.redirectPage(url);
        }
    );
},

它被称为“闭包”

来自谷歌的随机链接:http ://www.javascriptkit.com/javatutors/closures.shtml

完美的答案在这里:https ://stackoverflow.com/a/111200/251311

于 2012-05-10T00:33:23.157 回答