javascript - 如何使对象方法成为 IIFE?

标签 javascript jquery function iife

我一直在尝试使对象方法成为 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);
            })();
        }
    } 
}

以上返回

Uncaught TypeError: trans.bind_toggle is not a function

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

谢谢:)

最佳答案

我建议您将所有代码包装在 IIFE 中,然后在该函数的范围内声明一次性定时器,或者像示例中那样将它们设为 IIFE,而不是将一次性函数存储在对象中以下。这样,它们将在 IIFE 运行后被正确地垃圾收集。像这样的事情:

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

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

关于javascript - 如何使对象方法成为 IIFE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53265924/

相关文章:

javascript - 寻找具有素面的多边形区域

c - 为什么我们应该或不应该更喜欢接受参数的宏而不是做同样工作的函数?

javascript - 将 JavaScript 对象属性从数组修改为字符串

javascript - PDF 表单的简短 JS 脚本缺少语句

javascript - 使用 JavaScript 的 eBay API CORS 请求返回未定义

C - 通过引用和值将结构参数传递给函数

php - 带有动态参数的 call_user_func

jQuery 循环插件 上一页/下一页

jquery - 在 IE7 上使用 jquery css 设置边框需要很长时间

javascript - jquery函数一次显示一个字符的文本