我正在使用YUI3的自动完成插件。 Y.Plugin.Autocomplete。
现在我想扩展这个插件并创建一些非常具体的插件。如Y.MyModule.TagAutocomplete,Y.MyModule.EmailAutocomplete等。
我的简单问题是,当我在我的子类中编写初始化方法时,我是否需要显式调用超类构造函数,还是隐式发生? 如果我必须调用它的语法是什么?
答案 0 :(得分:1)
我从未试图扩展插件,但我确实从Y.Base扩展而且它的工作方式如下所示:http://yuilibrary.com/yui/docs/base/
详情:
您创建“构造函数”。在这里你应该调用超类构造函数:
function MyClass(config) {
// Invoke Base constructor, passing through arguments
MyClass.superclass.constructor.apply(this, arguments);
}
接下来,使用Y.extend方法使您自己的类从Y.Base扩展(或者在您的情况下为Y.Plugin.Autocomplete)
Y.extend(MyClass, Y.Base, {
// Prototype methods for your new class
});
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");
}
});
我身边的最后评论:我从未尝试过扩展Y.Plugin.Autocomplete,我在Autocomplete实现中有一些内幕。试试吧!