2012-03-30 88 views
3

我正在使用YUI3的自動完成插件。 Y.Plugin.Autocomplete。擴展YUI3插件和類

現在我要擴展這個插件,並創建一些非常具體的插件。如Y.MyModule.TagAutocomplete,Y.MyModule.EmailAutocomplete等。

我簡單的問題是,當我在我的子類編寫初始化方法做我需要顯式調用父類的構造或者它含蓄地發生? 如果我必須調用它是什麼語法?

回答

1

我從來沒有試圖擴大插件,但我沒有從Y.Base延伸,它可以作爲記錄在這裏:http://yuilibrary.com/yui/docs/base/

在細節:

  1. 您創建一個「構造函數」。在這裏,你應該調用父類的構造:

    function MyClass(config) { 
        // Invoke Base constructor, passing through arguments 
        MyClass.superclass.constructor.apply(this, arguments); 
    } 
    
  2. 接下來,使用Y.extend方法,使從Y.Base(或Y.Plugin.Autocomplete你的情況)擴展自己的類

    Y.extend(MyClass, Y.Base, { 
        // Prototype methods for your new class 
    }); 
    
  3. Y.Base有一個稱爲「初始化程序」的特殊方法 - 當你創建一個新的對象時,這個方法在每個類的層次上執行,而你不需要手動調用父進程的initizlizer。我認爲Y.Plugin.Autocomplete有它自己的「初始化程序」。所以絕對不要如下:

    Y.extend(MyClass, Y.Plugin.Autocomplete, { 
        initializer: function(config) { 
         alert("This initializer called after Y.Plugin.Autocomplete's initializer"); 
        } 
    }); 
    

從我身邊最新的留言:我從來沒有試圖擴大Y.Plugin.Autocomplete,我在那裏是自動完成實現引擎蓋下的東西。嘗試一下!