对象
对象是 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(属性)
你可以通过遍历物品数组,批量清空玩家的物品。