我一直在尝试使对象方法成为一个实例,但是我一点也没有运气。可能吗?我们将所有函数存储为方法,以使它们井井有条。
尽管我们还有更多选择,但我选择了一个对象和一种方法来说明我要执行的操作。
我想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?如果是这样,我该怎么办?
谢谢:)
答案 0 :(得分:2)
不是将一个定时器函数存储在一个对象中,我建议您将所有代码包装在一个IIFE中,然后在该函数的范围内声明一个定时器,或者像示例中那样使它们成为IIFE下面。这样,在IIFE运行之后,它们将被合理地收集为垃圾。像这样:
(function () {
(function () {
// Logig for bind_toggle
}());
// All the rest of your code
}());
在IIFE中拥有所有代码,您也可以避免声明大多数全局变量。如果确实需要全局,则可以将其定义为window的属性,例如window.someGlobal = 1
。