2011-10-14 48 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