扩展YUI3插件和类

时间:2012-03-30 11:04:27

标签: javascript yui3

我正在使用YUI3的自动完成插件。 Y.Plugin.Autocomplete。

现在我想扩展这个插件并创建一些非常具体的插件。如Y.MyModule.TagAutocomplete,Y.MyModule.EmailAutocomplete等。

我的简单问题是,当我在我的子类中编写初始化方法时,我是否需要显式调用超类构造函数,还是隐式发生? 如果我必须调用它的语法是什么?

1 个答案:

答案 0 :(得分: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有一个名为“初始化程序”的特殊方法 - 当你创建一个新对象并且你不需要手动调用parent的initizlizer时,这个方法在每个类中以hierarcy执行。我认为Y.Plugin.Autocomplete有自己的“初始化程序”。所以jus做了以下:

    Y.extend(MyClass, Y.Plugin.Autocomplete, {
        initializer: function(config) {
            alert("This initializer called after Y.Plugin.Autocomplete's initializer");
        }
    });
    
  4. 我身边的最后评论:我从未尝试过扩展Y.Plugin.Autocomplete,我在Autocomplete实现中有一些内幕。试试吧!