Google Closure Library и удаление мертвого кода в расширенной оптимизации - PullRequest
0 голосов
/ 08 марта 2020

Я работаю над плагинами для goog.editor.Field и недавно рассмотрел код для пакета goog.editor. Все плагины расширены от базового класса goog.editor.PluginImpl, и большую часть времени мы переопределяем некоторые ключевые методы, такие как handleSelectionChange, execCommand. Проблема в том, что goog.editor.Field получает доступ к своим плагинам через строковое имя, а не прямой доступ. Вот раздел кода для поля. js


var plugin = plugins[i];
    if ((plugin.isEnabled(this) ||
         goog.editor.PluginImpl.IRREPRESSIBLE_OPS[op]) &&
        plugin[goog.editor.PluginImpl.OPCODE[op]].apply(plugin, argList)) {
      // Only one plugin is allowed to handle the event. If for some reason
      // a plugin wants to handle it and still allow other plugins to handle
      // it, it shouldn't return true.
      return true;
    }

Как вы можете видеть, методы переопределения для плагинов не доступны напрямую, и, следовательно, методы могут быть предназначены для удаления мертвого кода. Любой намек, почему компилятор в расширенном режиме не удалит переопределяющие методы?

...