javascript - 开发一个 super 简单的js框架作为对象练习的问题

标签 javascript oop object

我确定我的问题相对容易回答,但作为初学者我真的很难回答。

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

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

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);

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

Character

Race 1 Race 2 Race 3

ActualChar ActualChar ActualChar ActualChar ActualChar

所以我的最终 Angular 色将派生自定义的 Race,而 Race 将派生自 Angular 色对象。

现在我的问题是,我不知道如何将 Race 设置为从 Character 派生。我是否将 character 声明为 Race 的原型(prototype)?还是我

var newrace = new Character();

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

我尽量保持重点和简短,但如果您想了解更多关于我正在尝试做的事情的细节,我也写了一篇关于它的博客文章,如果有更多细节的话要求:http://www.endangeredpixel.com/

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

最佳答案

好吧,你可以做这样的事情。虽然你可以根据自己的喜好制作更少或更多的构造函数。现在我正在使用 Angular 色、种族和玩家(实际 Angular 色)。您可以使用不同的 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

在这个例子中,我创建了一个 player1,名字叫 Legolas,年龄 100 岁,男性, Sprite 种族。这里还有一个 jsfiddle

如果您想添加更多种族,则必须更新 Race 构造函数中的 if 语句,以便为您要添加的特定种族分配技能。

关于javascript - 开发一个 super 简单的js框架作为对象练习的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17482649/

相关文章:

javascript - JSHint 和 JSLint 未捕获未定义的函数

javascript - 后退按钮处理动态表单

javascript - 调试反混淆的 javascript

c# - 在静态构造函数中初始化静态变量而不是直接赋值有什么好处

java - 如何使用oop和soc实现从数据库读取默认对象设置

javascript - jquery ajax发送json

javascript - 尝试使用在 React 中映射的输入字段将数据绑定(bind)到状态

php - 使用 RecursiveDirectoryIterator 将目录和文件列表到数组中?

javascript - 如何在jquery中触发 slider 图片更改事件

vb.net - 具有项目范围功能的实用程序类