对象

对象是 JavaScript 的一种变量类型,它会像字典一样,存储多个名称,和名称所对应的值。
对象是按引用传递的,和数组类似,具体请查看『数组』页面的“按引用传递”章节。

声明一个对象

通过成对的英文花括号声明一个对象。
声明一个含有名称为『名字 1』值为 233 和名称为『名字 2』值为'你好'的对象:
//以下三种写法效果相同
var 对象 = { 名字1: 233, 名字2: '你好' };

var 临时变量 = 233;
var 对象 = { 名字1: 临时变量, 名字2: '你好' };

var 名字1 = 233;
var 对象 = { 名字1, 名字2: '你好' }; // { 名字1: 名字1 } 可以简写成 { 名字1 }

从对象中读出值

对象的读取写入,和属性、物品类似。
通过 对象.xxx 可以从对象中读出值。
var 宠物 = { 战斗力: 30, 血量: 10 };

属性.输出文本 = '这个宠物的战斗力为' + 宠物.战斗力 + ',血量为' + 宠物.血量 + '。';

向对象写入值

通过 对象.xxx = xxx 可以向对象中写入值。
var 宠物 = { 战斗力: 30, 血量: 10 };

//以下三种写法实现的效果相同,都让『宠物』对象中的『血量』变为100

宠物.血量 = 100;

宠物['血量'] = 100;

var 文本变量 = '血量';
宠物[文本变量] = 100;

在对象中嵌套对象和数组

对象中的值可以是任意变量类型,包括文本、数字、对象和数组。也就是说,你可以在对象中嵌套对象和数组,也可以在数组中嵌套对象。
var 物品信息 = {
  名称: '钻石剑',
  类型: '武器',
  附魔: ['锋利', '火焰'],
  日志: [
    {
      编号: 1,
      内容: '玩家合成了这个武器。',
    },
    {
      编号: 2,
      内容: '玩家用这把武器击打了一个村民。',
    },
    {
      编号: 3,
      内容: '玩家用这把武器击打了一个僵尸。',
    },
  ],
};

属性.名称; //读取到 '钻石剑'
属性.附魔[1]; //读取到 '火焰'
属性.日志[2].内容; //读取到 '玩家用这把武器击打了一个僵尸。'

将对象转换为文本

如果想将对象存储到属性或数据库中,需要先将对象转换为文本。
通过 JSON.stringify(对象) 将对象转换为文本。
var 宠物 = { 战斗力: 30, 血量: 10 };
var 文本变量 = JSON.stringify(宠物)
对象被转换成文本后,会变成这样:{"战斗力":30,"血量":10},这个文本叫做 JSON。可以把它理解为被文本化了的对象。
通过 JSON.parse(文本) 将文本转换回对象。
var 文本变量 = '{"战斗力":30,"血量":10}';
var 宠物 = JSON.parse(文本变量)

获得对象的全部名称

通过 Object.keys() 可以获得含有对象全部名称的数组。
var 对象 = { 名字1: 233, 名字2: '你好' }
var 名称数组 = Object.keys(对象) // 数组的值为 ['名字1', '名字2']
属性和物品其实是特殊的对象,可以通过 Object.keys() 获得所有属性及物品名称
var 物品数组 = Object.keys(物品)
var 属性数组 = Object.keys(属性)
你可以通过遍历物品数组,批量清空玩家的物品。