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