function AnnounceClass() { var Cat = new Class({ initialize: function(name){ this.name = name; } }); var myCat = new Cat('Micia'); alert(myCat.name); //alerts 'Micia' var Cow = new Class({ initialize: function(){ alert('moooo'); } }); var Effie = new Cow($empty); //不会alert 'moooo', 因为初始化方法被$empty方 法 overridden } AnnounceClass(); 在Extends中可以有同名的方法, 也会有一个 parent 属性, 这将允许您调用其他的 overridden 方法: function extendsClass() { var Animal = new Class({ initialize: function(age){ this.age = age; }, setName: function(name){ //此函数会在下面的类中被重写 this.name = name; } }); var Cat = new Class({ Extends: Animal, initialize: function(age){ this.parent(age); //调用Animal的initalize }, setName: function(name){ this.name = name + " cat"; } }); var myCat = new Cat(20); myCat.setName('Micia'); alert(myCat.name); //Alerts 'Micia'. alert(myCat.age); //Alerts 20. } extendsClass(); Implements 与 Extends 类似, except that it overrides properties without inheritance. 可用于在多个 类中实现一系列默认属性.(注:Implements 不会重写同名方法,而只会调用Implements所实现类中的同名方法,如 下所示): function implementsClass() { var Animal = new Class({ initialize: function(age){ this.age = age; } }); var Cat = new Class({ Implements: Animal, setName: function(name){ this.name = name } }); var myAnimal = new Cat(20); myAnimal.setName('Micia'); alert(myAnimal.name); //Alerts 'Micia'. } implementsClass(); |
|
来自: 寂寞如故 > 《mootools》