Переопределить объект JavaScript YUI - PullRequest
2 голосов
/ 14 октября 2011

Я пытаюсь изменить код Javascript. Я знаю, что я хочу изменить, но это находится в огромном файле JS регулярно обновляемого продукта. Это в основном небольшая настройка продукта. Вместо того, чтобы взломать файл напрямую, я подумал, что можно было бы перенести мои изменения и оставить основной файл без изменений.

Структура файла JS, который я хотел бы изменить, выглядит следующим образом:

(function()
{
   Company.CoolWidget = function(inArg)
   {
      Company.CoolWidget.superclass.constructor.call(this, inArg);

   };

   YAHOO.lang.augmentObject(Company.CoolWidget.prototype,
   {
      options:
      {
          ....
      },
      onReady: function COOL_onReady()
      {
          ....
      }
   }, true);
})();

Я хочу сделать все в стандартной функции onReady (COOL_onReady ()), но кое-что добавить в конец. И я хочу добавить новый метод, что-то вроде:

onNewMethod: function EXT_COOL_newMethod()

Я не уверен, как это сделать и могу ли я это сделать, и я не уверен, что простая загрузка нового файла JS после того, как другой файл JS обязательно гарантирует, что произойдет перезапись.

Или, возможно, вопрос должен звучать так: как я могу быть минимально инвазивным при внесении изменений в файл Javascript YUI2.

1 Ответ

0 голосов
/ 23 ноября 2011

У меня была проблема, похожая на эту, но то, что я пытался сделать, это исправить ошибку. Я полагаю, вы могли бы рассмотреть это то же самое.

Y.Button.prototype._setTitle = function (p_sTitle) { 
  // http://yuilibrary.com/forum/viewtopic.php?p=885
  /*jslint nomen: true*/
  var sTitle = p_sTitle;
  if (!sTitle) {
    switch (this.get("type")) {
    case "radio":
      sTitle = this.RADIO_DEFAULT_TITLE;
      break;
    case "checkbox":
      sTitle = this.CHECKBOX_DEFAULT_TITLE;
      break;
    case "menu":
      sTitle = this.MENUBUTTON_DEFAULT_TITLE;
      break;
    case "split":
      sTitle = this.SPLITBUTTON_DEFAULT_TITLE;
      break;
    case "submit":
      sTitle = this.SUBMIT_TITLE;
      break;
    }
  }
  /*jslint nomen: false*/
  this._button.title = sTitle;
  /*jslint nomen: true*/
};

Прототип, я полагаю, это то, что вам нужно. Ссылка выше может помочь.

Удачи! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...