开发一个超级简单的js框架作为对象练习的问题

时间:2013-07-05 06:42:56

标签: javascript oop object

我确信我的问题回答起来比较简单,但作为初学者,我真的很挣扎。

所以我从各种来源学到了(至少我认为我有)Javascript的基础知识,但是我真的在努力学习对象,类和语法。我完全理解这个概念,多年来我一直在基础层面上使用各种编程语言,但是,我正在努力实现我在JS中学到的东西。

基本上我正在尝试开发,作为练习来证明我的学习是一个简单的框架来制作视觉小说游戏。所以我的整个框架可以简化为两个基本对象,一个场景和一个角色。所以我试图充实我的角色对象:

function character (race,gender,age)
{
    this.race = race;
    this.gender = gender;
    this.age = age;
}

//lets make an elf race based on the character prototype
var elfRace = new character("elf","m",100);

基本上我的目标是完成以下层次结构

  

字符

     

第1场比赛2第3场比赛

     

ActualChar ActualChar ActualChar ActualChar ActualChar

所以我的最后一个角色将来自定义的Race,它将派生自角色对象。

现在我的问题是,我无法弄清楚如何设置Race来自Character。我是否将角色宣布为Race的原型?或者我

var newrace = new Character();

如何在比赛中添加额外的“技能”或“参数”?所以精灵种族应该有文字:+5和恶魔种族力量:+5,但这些参数只能在种族对象级别添加。

我尽力保持这一点并尽可能简短,但如果你想了解我正在尝试做的更多细节,我也写了一篇关于它的博客文章,如果更多细节是需要:http://www.endangeredpixel.com/

希望我能在这个问题上得到一些帮助,我已经尝试过更多关于对象,层次结构和原型的研究,但是我要么得到过于简单的解释和教程,要么超出我的技能水平的咆哮,rambles和非常高级的教程。我在中间阶段努力寻找解释:(。

1 个答案:

答案 0 :(得分:1)

嗯,你可以做这样的事情。虽然你可以根据自己的喜好制造更少甚至更多的构造。现在我正在使用角色,种族和玩家(实际角色)。你可以使用不同的Race构造函数,比如ElfRace,DemonRace,但对于像2场比赛一样简单的东西,你可以像我一样使用它。这是一般的想法,您可以修改它以满足您的特定需求。

function Character(gender, age) {
    this.gender = gender;
    this.age = age;
}

function Race(gender, age, race) {
    Character.call(this, gender, age); //inherit from Character
    this.race = race;
    if (race == 'elf') {
        this.dexterity = 5;
    } else if (race == 'demon') {
        this.strength = 5;   
    }; // you could check for more races here.
}

function Player(name, age, gender, race) {
    Race.call(this, gender, age, race); //inherit from Race
    this.name = name;
}

var player1 = new Player("Legolas", 100, "m", "elf");
alert(player1.name); //Legolas
alert(player1.age); //100 years old
alert(player1.gender); //m
alert(player1.race); //elf
alert(player1.dexterity); //5
alert(player1.strength); // undefined because elf's have dexterity not strength

在这个例子中,我创建了一个名为Legolas,年龄为100岁,男性和精灵种族的player1。这也是 jsfiddle

如果要添加更多比赛,则必须更新Race构造函数中的if语句,以指定要添加的特定种族的技能。