2012-03-30 91 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,我在那里是自动完成实现引擎盖下的东西。尝试一下!