site topic网站专题
首页
>
网站专题
>
专题详情
分享新闻到:

面向对象的JavaScript(一) — 类及类的继承

互诺科技:2009-09-09 13:33     阅读数:       标签:

看到很多做ASP.NET开发的JS水平都很差,所以想写一个面向对象的JavaScript系列,希望对JS新手有所帮助。不知道能否坚持下去。今天从类(非静态类)及类的继承开始。我用游戏中的角色(玩家,怪物)来做示例。

首先是角色类,具有基本属性 Name,HP,PhysicalDamage和基本方法PhysicalAttack

以下为引用的内容:

    //角色
    //类名:Role
    function Role(name, hp, pd) {
        
this.Name = name; //属性-名字
        this.HP = hp; //属性-生命
        this.PhysicalDamage = pd; //属性-物理攻击力
        //方法-物理攻击(r:被攻击目标)
        this.PhysicalAttack = function(r) {
            alert(
this.Name + " 物理攻击 " + r.Name + "\r\n HP - " + this.PhysicalDamage);
            r.HP 
= r.HP - this.PhysicalDamage;
        }
    }
    
    
var feifei = new Role("飞飞"1000100);//实例化出一个人物
    var rabbit = new Role("兔子"40050); //实例化出一个怪物
    feifei.PhysicalAttack(rabbit); //发起物理攻击
    alert("兔子当前HP:" + rabbit.HP);

由于Role类不能满足需要,我们新建两个类Player,Monster继承Role

以下为引用的内容:

    //普通怪物 继承 Role
    function Monster(name, hp, pd) {
        Role.apply(
this, arguments); //通过apply实现继承,强大的apply使Monster具备了Role的所有属性与方法,apply和call是个神奇的东西,大家有兴趣自己谷歌。
    }