如何使Object方法成为IIFE?

时间:2018-11-12 16:05:43

标签: javascript jquery function iife

我一直在尝试使对象方法成为一个实例,但是我一点也没有运气。可能吗?我们将所有函数存储为方法,以使它们井井有条。

尽管我们还有更多选择,但我选择了一个对象和一种方法来说明我要执行的操作。

我想IIFe-fy他们,因为他们一开始开枪,他们就完成了他们的工作,不再需要,考虑到这一点以及我们将要采用的方法,对我来说惹恼他们。

我的代码是:

let trans = {
    bind_toggle: function(){
        if ($('.tw-o').length != 0) {
            // window open, add toggle
            $('.tw-h').click(function(e){
                $('.tw-b').toggle(599);
            });
        }
    } 
}

我希望可以调用trans.bind_toggle而不用自己调用它... IIFE,但是我还无法实现它。我尝试过:

let trans = {
    bind_toggle: (function(){
        if ($('.tw-o').length != 0) {
            // window open, add toggle
            $('.tw-h').click(function(e){
                $('.tw-b').toggle(599);
            })();
        }
    } 
}

以上返回

  

未捕获的TypeError:trans.bind_toggle不是函数

是否可以在对象中使用IIFE?如果是这样,我该怎么办?

谢谢:)

1 个答案:

答案 0 :(得分:2)

不是将一个定时器函数存储在一个对象中,我建议您将所有代码包装在一个IIFE中,然后在该函数的范围内声明一个定时器,或者像示例中那样使它们成为IIFE下面。这样,在IIFE运行之后,它们将被合理地收集为垃圾。像这样:

(function () {
    (function () {
        // Logig for bind_toggle
    }());
    // All the rest of your code
}());

在IIFE中拥有所有代码,您也可以避免声明大多数全局变量。如果确实需要全局,则可以将其定义为window的属性,例如window.someGlobal = 1