Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中动态地将一个对象添加到另一个对象_Javascript_Jquery - Fatal编程技术网

在JavaScript中动态地将一个对象添加到另一个对象

在JavaScript中动态地将一个对象添加到另一个对象,javascript,jquery,Javascript,Jquery,我有一个对象,当用户选择某个值时,它需要添加另一个对象。这个对象是一个保存基本信息的玩家对象,我还有一个保存武器信息的武器对象。当用户选择要使用的武器时,我想将武器对象添加到玩家对象中,如果用户选择不同的武器,我想删除以前的武器对象并添加新的武器对象。这可能吗?这会像将值推入数组一样吗 HTML <select> <option></option> <option>Sword</option> <optio

我有一个对象,当用户选择某个值时,它需要添加另一个对象。这个对象是一个保存基本信息的玩家对象,我还有一个保存武器信息的武器对象。当用户选择要使用的武器时,我想将武器对象添加到玩家对象中,如果用户选择不同的武器,我想删除以前的武器对象并添加新的武器对象。这可能吗?这会像将值推入数组一样吗

HTML

<select>
    <option></option>
    <option>Sword</option>
    <option>Axe</option>
    <option>Hammer</option>
</select>

在JS中相互添加现有对象非常容易

在你的情况下,
Player.will=剑

那会给你

Player = {
    name: "One",
    weapon: {
        type: "Bronze",
        speed: 1.25,
        min_damage: 15,
        max_damage: 20,
        str_required: 15,
        gems: "",
        hilt: "",
        blade: "",
        inscriptions: "",
        runes: ""
    }
}

不过我建议为每个武器对象添加一个
名称
键。现在,当你看我上面贴的
玩家
对象时,你不知道它有什么武器。因此,只需添加
名称:“剑”
就可以在以后根据需要引用它。

是的,您可以将玩家选择的武器存储在一个空阵列中

var Player = {
    name: "One",
    weapon: []
}
…然后将武器推入阵列

Player.weapon.push({ name: 'Sword', obj: Sword });
如果你想在添加新武器之前清空阵列,你可以这样做

Player.weapon.empty();
Player.weapon = { name: 'Sword', obj: Sword };
或者

你可以

Player.weapon = Sword
…但是你的玩家只能选择一件武器。如果你这样做,我会这样做

Player.weapon.empty();
Player.weapon = { name: 'Sword', obj: Sword };
…或在武器对象上存储名称属性


希望有帮助,不要玩。武器=锤子;工作?既然你所有的武器都是同一个类,具有不同的值,为什么不创建一个武器对象,并简单地基于名称进行预设?还有什么不工作呢?这是一种问题,使用数据绑定框架将大大受益。@JoelEtherton我没有想到这一点。既然你已经提到了,我可能会这么做。这能解决我的问题吗,因为我实际上只加载一个对象?或者这会产生更多的问题吗?我没想过做一个对象数组,实际上看起来会更容易。我试试看,谢谢。是的,你的答案是正确的。你的设置不起作用吗?现在我的浏览器不起作用。这可能是一个棘手的问题,也可能是浏览器本身的问题。不管怎样,至少它对其他人有用。谢谢你的帮助。每当我在积极开发的时候(特别是在JavaScript中),我都会打开Chrome开发工具。如果进入“设置”(右上角的齿轮图标),请在“常规”下标记复选框“禁用缓存(当DevTools打开时)”。这对我很有帮助。保持devtools打开也会让您看到出现的任何错误。我不知道其他浏览器的设置是什么。我觉得Chrome是最适合开发的。可以。我可能应该停止开发Firefox,转而使用Chrome。再次感谢。