2011-10-14 39 views
2

我努力修改一些Javascript代码。我知道我想改变什么,但它是在一个定期更新产品的巨大JS文件中。这基本上是一个产品的小型定制。而不是直接破解文件,我认为可以将我的更改外部化并使核心文件保持不变。忽略YUI Javascript对象

,我想改变貌似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文件进行修改时具有微创性。

+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链接可能会有所帮助。

祝你好运! :)

+0

添加一些'新'你可能想看看... lang.extend 'YAHOO.widget.GroupedDataTable = GroupedDataTable; YAHOO.lang.extend(GroupedDataTable,YAHOO.widget.DataTable,{' – Jim