• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Typescript模拟实现多继承

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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类的

 缺点:
 1:只能在继承一级的方法和属性

 2:如果父类中含有同一种方法或属性,会根据赋值的顺序,先赋值的会被覆盖掉


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Angular2和TypeScriptAngular2和TypeScript 发布时间:2022-07-18
下一篇:
typescript的lambads解决this关键字找不到属性发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap