覆盖YUI Javascript对象

时间:2011-10-14 19:01:30

标签: javascript yui overwrite

我正在努力修改一些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文件必然会保证覆盖将会发生。

或许问题应该是:如何在更改YUI2 Javascript文件时进行微创。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,但我想要完成的是修复错误。我想你可以认为这一点。

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*/
};

原型,我相信,就是你所追求的。上面的yuilibrary链接可能有所帮助。

祝你好运! :)