【发布时间】:2017-05-06 00:14:12
【问题描述】:
我想使用this 代替 IIFE 中的对象名称。
var ops = {
start: (function (){
socket.on('set', function(data) {
ops.getData();
});
}()),
getData: function (){
...
}
};
如何实现?
【问题讨论】:
-
为什么
start是一个 IIFE?这将在您定义此对象时执行代码。start将设置为socket.on返回的任何值 -
@Damon 不会,因为函数中没有
return语句。start将设置为undefined。 -
@Banzy 这不是重点,为什么要将对象属性设置为未定义作为副作用?这里的模式通常是在对象上定义一个启动函数并在适当的时候调用该函数,否则没有理由将立即执行的代码块放在对象中。
-
是的@Damon,它现在工作正常,但也许最好通过调用将其更改为常规函数。
标签: javascript object iife