在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
class Animal{ eat():void{ alert("animal eat"); } } class Mamal extends Animal{ breathe() :void{ alert("Mamal breathe"); } } class WingedAnimal extends Animal { fly() { alert("WingedAnimal fly"); } } //模仿实现多继承 的函数方法 function applyMixins(derivedCtor:any,baseCtor:any[]) { //遍历父类中的所有的属性,添加到子类的属性中中 baseCtor.forEach(baseCtor => { //获取遍历到的父类中的所有属性 Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => { if (name !== "constructor") { //父类中的属性,添加到子类的属性中 derivedCtor.prototype[name] = baseCtor.prototype[name]; } }); }); } //定义Bat类, class Bat implements Mamal, WingedAnimal{ fly: () => void; breathe: () => void; eat: () => void;//这个属性是访问不到 } applyMixins(Bat, [Mamal, WingedAnimal]); var bat = new Bat(); bat.fly(); bat.breathe(); bat.eat();//执行无结果,eat是Animal类的 缺点: 2:如果父类中含有同一种方法或属性,会根据赋值的顺序,先赋值的会被覆盖掉 |
请发表评论