将一个对象的多个实例添加到另一个对象的数组中;

用户名

我试图将不同对象的多个实例添加到另一个对象的数组。但是,我遇到了麻烦。

*Creates the player*
function Player(){
    this.name = "";
    this.status = "Alive";
    this.primaryClass = null;
    this.secondaryClass = null;
    this.strength = 0;
    this.stamina = 0;
    this.mystica = 0;
    this.health = 0;
    this.primaryWeapon = null;
    this.offHand = null;
    this.accuracy = 0;
    this.block = 0;
    this.baseDamage = 0;
    this.maxDamage = 0;
    this.attackSpeed = 0;
    this.shield = null;
    this.armor = null;
    this.armorRating = 0;
    this.exp = 0;
}
*Creates the sword weapon*
function LongSword(){
    this.name = "";
    this.attackSpeed = 1;
    this.baseDamage = 10;
    this.maxDamage = 15;
    this.durability = 100;
    this.block = 5;
    this.exp = 0;
}
*Creates the Long Sword skills*
function Stab(){
    this.name = "Stab";
    this.status = "Unlocked";
    this.damage = 0;
    this.damageModifier = 0.75;
    this.cooldown = 5;
    this.exp = 0;
    this.desc = "Stabs your opponent for an additional " +parseInt(this.damageModifier * 100) +"% of your base damage.";
}
*Equips the Player weapon(s)*
Player.prototype.equipWeapon = function equipWeapon(main, offHand){
    if(this.primaryClass.dualWield){
        this.primaryWeapon = main;
        if(offHand){
            this.offHand = offHand;
            this.baseDamage += (this.strength + (main.baseDamage + (offHand.baseDamage / 2))) / 10;
            this.maxDamage += (this.strength + (main.maxDamage + (offHand.maxDamage / 2))) / 5;
            this.attackSpeed += main.attackSpeed + (offHand.attackSpeed / 2);
            this.block += main.block + offHand.block;
        }
    }
    else{
        this.primaryWeapon = main;
        this.offHand = null;
        this.baseDamage += (this.strength + main.baseDamage) / 10;
        this.maxDamage += (this.strength + main.maxDamage) / 5;
        this.attackSpeed += main.attackSpeed;
        this.block += main.block;
    }

    if(!this.primaryClass.dualWield && offHand){
        console.log("Your class can not wield dual weapons.");
    }
}
*Equips the Weapon skills*
LongSword.prototype.skills = function skills(skill){
    this.skills = [];
    skill.damage = parseFloat((this.baseDamage / skill.damageModifier).toFixed(1));
    this.skills.push(skill);
}

这些对象构成了我正在尝试做的基本元素。因此,当我实例化每个实例时,

var Robert = new Player();
Robert.equipWeapon(new LongSword());
Robert.primaryWeapon.skills(new Stab());

我得到了想要的结果。但是,如果我尝试添加的另一个实例Stab(),使其看起来像这样

var Robert = new Player();
Robert.equipWeapon(new LongSword());
Robert.primaryWeapon.skills(new Stab());
Robert.primaryWeapon.skills(new Stab());

我得到的类型错误:Robert.primaryWeapon.skills is not a function为什么它一次只能正常工作,而第二次却不能正常工作。我试图达到的最终结果是,如果被调出Robert.primaryWeapon.skills,我应该看到该Stab对象的两个实例

比古德

Longsword的原型中有两个问题

首先,将您的函数替换skill为具有相同名称的存储数组:

LongSword.prototype.skills = function skills(skill){
    this.skills = []; //Overrides your function
    ...

这导致您的错误Robert.primaryWeapon.skills is not a function导致,一旦调用它,它确实是一个数组。

要解决此问题,只需更改函数或数组之一的名称即可。

其次,skills每次调用函数时都要数组初始化为一个空数组,每次都将其重置。您应该在Longsword的原型中对其进行初始化


这是一个带有这些修复程序的示例(如果需要,可以摆弄它):

function LongSword(){
   this.skills = [];
   ...

LongSword.prototype.addSkill = function skills(skill){
    ...

然后,您将能够添加多种技能:

var Robert = new Player();
Robert.equipWeapon(new LongSword());
Robert.primaryWeapon.addSkill(new Stab());
Robert.primaryWeapon.addSkill(new Stab());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将一个对象的多个实例添加到另一个对象的数组中;

来自分类Dev

如何将一个对象添加到另一个对象

来自分类Dev

将属性从一个对象数组添加到另一个对象

来自分类Dev

将数组作为对象添加到另一个数组

来自分类Dev

如何最好地将新对象添加到另一个对象中的数组?

来自分类Dev

如何将一个对象添加到另一个对象的值中

来自分类Dev

如何将数组的元素添加到另一个对象并计数

来自分类Dev

将另一个类行添加到对象数组

来自分类Dev

如何将新数组添加到另一个数组的特定对象中

来自分类Dev

将匹配的对象添加到另一个数组时,从数组中删除它们

来自分类Dev

将匹配的对象添加到另一个数组时,从数组中删除它们

来自分类Dev

如何将一个类中的对象添加到另一个类中的List。

来自分类Dev

将另一个类中的对象添加到JPanel

来自分类Dev

将另一个对象添加到现有的JSON中

来自分类Dev

如何将另一个变量添加到现有对象中?

来自分类Dev

如何将一个数组添加到存在于mongodb对象中的另一个数组中

来自分类Dev

为什么可以将一个类的对象添加到另一个类的LinkedList中?

来自分类Dev

遍历对象中的对象,然后将属性添加到javascript中的另一个对象

来自分类Dev

在javascript中将对象添加到另一个对象数组

来自分类Dev

在javascript中将一个对象添加到另一个对象

来自分类Dev

将JavaScript对象添加到另一个对象的问题

来自分类Dev

JPA ManyToMany:将现有对象添加到另一个对象

来自分类Dev

将一个对象的类型安全添加到另一个对象的属性的简写

来自分类Dev

如何将内容从一个对象添加到另一个对象?

来自分类Dev

根据条件将对象从一个数组添加到另一个数组

来自分类Dev

将链接的对象添加到C#ASP.Net MVC中的另一个对象

来自分类Dev

如何将 json 对象添加到同级别的另一个 json 对象中?

来自分类Dev

根据值将属性从具有对象的一个数组添加到另一个对象

来自分类Dev

将类的实例传递给另一个构造函数,该构造函数将其对象添加到所传递的实例拥有的列表中

Related 相关文章

  1. 1

    将一个对象的多个实例添加到另一个对象的数组中;

  2. 2

    如何将一个对象添加到另一个对象

  3. 3

    将属性从一个对象数组添加到另一个对象

  4. 4

    将数组作为对象添加到另一个数组

  5. 5

    如何最好地将新对象添加到另一个对象中的数组?

  6. 6

    如何将一个对象添加到另一个对象的值中

  7. 7

    如何将数组的元素添加到另一个对象并计数

  8. 8

    将另一个类行添加到对象数组

  9. 9

    如何将新数组添加到另一个数组的特定对象中

  10. 10

    将匹配的对象添加到另一个数组时,从数组中删除它们

  11. 11

    将匹配的对象添加到另一个数组时,从数组中删除它们

  12. 12

    如何将一个类中的对象添加到另一个类中的List。

  13. 13

    将另一个类中的对象添加到JPanel

  14. 14

    将另一个对象添加到现有的JSON中

  15. 15

    如何将另一个变量添加到现有对象中?

  16. 16

    如何将一个数组添加到存在于mongodb对象中的另一个数组中

  17. 17

    为什么可以将一个类的对象添加到另一个类的LinkedList中?

  18. 18

    遍历对象中的对象,然后将属性添加到javascript中的另一个对象

  19. 19

    在javascript中将对象添加到另一个对象数组

  20. 20

    在javascript中将一个对象添加到另一个对象

  21. 21

    将JavaScript对象添加到另一个对象的问题

  22. 22

    JPA ManyToMany:将现有对象添加到另一个对象

  23. 23

    将一个对象的类型安全添加到另一个对象的属性的简写

  24. 24

    如何将内容从一个对象添加到另一个对象?

  25. 25

    根据条件将对象从一个数组添加到另一个数组

  26. 26

    将链接的对象添加到C#ASP.Net MVC中的另一个对象

  27. 27

    如何将 json 对象添加到同级别的另一个 json 对象中?

  28. 28

    根据值将属性从具有对象的一个数组添加到另一个对象

  29. 29

    将类的实例传递给另一个构造函数,该构造函数将其对象添加到所传递的实例拥有的列表中

热门标签

归档