Я видел в фреймворке (сталкивался с ним один раз и никогда больше), где разработчик определяет модуль следующим образом:
core.module.define('module_name',function(){
//module tasks up here
this.init = function(){
//stuff done when module is initialized
}
});
так как я больше никогда не видел фреймворк, я попытался создать свою собственную версию и скопировать большинство ее аспектов - особенно то, как выглядел код. Я пытался сделать это, но я не могу вызвать init()
модуля, потому что обратный вызов все еще функция, а не объект. вот почему я добавил return this
//my version
mycore.module.define('module_name',function(){
//module tasks up here
this.init = function(){
//stuff done when module is initialized
}
//i don't remember seeing this:
return this;
});
в mycore
, я называю модуль следующим образом (с return this
в определении модуля):
var moduleDefinition = modules[moduleName].definition; //the callback
var module = moduleDefinition();
module.init();
как превратить функцию обратного вызова в объект, но сохранить способ ее определения (без return this
в определении обратного вызова)?