Войти с помощью github
Форум /

Добрый день. Имею такой код:

modules.define('input', ['i-bem-dom'], function (provide, bemDom) {

   provide(bemDom.declBlock(this.name, {
      onSetMod: {
         'js': {
            'inited': function () {
               this._domEvents().on('focusin', this._focusIn);
               this._domEvents().on('focusout', this._focusOut);
            }
         }
      },
      _focusIn: function () {
         this.setMod('focus');
      },
      _focusOut: function () {
         this.delMod('focus');
      }
   }, {
      lazyInit: true,
      onInit: function () {
         this._domEvents().on('focusin', this.prototype._focusIn());
      }
   }));
});

Выдаёт ошибку:

Uncaught TypeError: Cannot read property 'focus' of undefined
    at l.setMod (jquery.js:9816)
    at l._focusIn (aside.js:89)
    at Function.onInit (aside.js:105)
    at Function._processInit (jquery.js:9816)
    at Function._processInit (jquery.js:9816)
    at h (jquery.js:9816)
    at d (jquery.js:9816)
    at HTMLLabelElement.<anonymous> (jquery.js:9816)
    at Function.each (jquery.js:365)
    at jQuery.fn.init.each (jquery.js:137)

Порядок подключения у меня такой: Сначала подключается jQuery 2.2.4 (проверял с версией 3, такая же ошибка) Далее bem-core.js из библиотеки bem-core-dist Далее вышеприведённый скрипт. Всё подключается в шапке без оборачивания в document.ready и тому подобное.

Пример вёрстки:

<input class="input i-bem" data-bem="{"input": {} }">

Такие кавычки в data-bem генерятся автоматически, т.к. пишу на паге, в инспекторе выглядит ок. Если убрать весь второй объект с lazyInit, то всё работает нормально. Что я делаю не так?