someClass = Ext.extend(someOtherClass,
initComponent: function (){
someFunction();
this.on('exampleEvent', someFuntion2(), this);
},
someFunction: function (){
this.fireEvent('exampleEvent');
return null;
}
//...
}
紧接在“this.fireEvent('exampleEvent');”之后“返回null”执行或“someFuntion2()”?为什么呢?
答案 0 :(得分:0)
首先,这里的第二个论点是:
this.on('exampleEvent', someFuntion2(), this);
应该是一个Function对象,你实际上已经在这里执行了someFunction2()......所以你可能想说:
this.on('exampleEvent', someFuntion2, this);
(注意someFunction2之后缺少的parens())
要回答你的问题,someFunction2将首先执行,因为Observable在ExtJS中的工作方式。当你调用fireEvent('exampleEvent')时...... Observable类(someClass必须从继承链中的somePoint扩展)将循环遍历为该事件添加了一个监听器的所有对象,并调用传递的Function对象在添加监听器的时候 - 在你的情况下,someFunction2(没有parens)
当然,添加事件监听器时可以添加选项,这会导致在事件触发后延迟执行函数...