猫史档案馆


【JavaScript教程】用对象和属性表示物体数据

用户:神岛吉吉喵神岛吉吉喵查看:40 回复:25 评论:40 创建时间:2021-01-09T12:28:23


center_image

久违的JavaScript教程来啦!

上节课我们学习了基础运算

今天将教大家用更简洁的方式表示物体数据:

对象(object)和属性(property)

具体的用法请戳视频:

https://www.bilibili.com/video/BV1FK411u7en

1. 用对象(object)属性(property)代替变量把数据整合在一个对象中

var user = {
    name: '吉吉喵', // 名字
    money: 10, // 金钱
    hp: 100, // 生命值
    atk: 20, // 攻击力
}

console.log(user.name + '有' + user.money + '金币 ' + user.hp + '生命 ' + user.atk + '攻击力') // 用user.属性名 "点"语法来获取对象属性值

对象属性跟变量相比

在表达多个物体数据的情况下

用对象来表示物体比用零散的变量更方便

var name1 = '吉吉喵' // 名字
var money1 = 10 // 金钱
var hp1 = 100 // 生命值
var atk1 = 20 // 攻击力

var name2 = '雷电猴' // 名字
var money2 = 5 // 金钱
var hp2 = 80 // 生命值
var atk2 = 30 // 攻击力

console.log(name1 + '有' + money1 + '金币 ' + hp1 + '生命 ' + atk1 + '攻击力')

//如果要显示雷电猴的数据, 需要逐个变量改成:
//console.log(name2 + '有' + money2 + '金币 ' + hp2 + '生命 ' + atk2 + '攻击力')

/////////////// 而下面的代码显示雷电猴数据则不用逐个修改变量名, 只需要修改变量user指向的对象
var user1 = {
    name: '吉吉喵', // 名字
    money: 10, // 金钱
    hp: 100, // 生命值
    atk: 20, // 攻击力
}

var user2 = {
    name: '雷电猴', // 名字
    money: 5, // 金钱
    hp: 80, // 生命值
    atk: 30, // 攻击力
}

var user = user1 //先演示user1输出, 然后改成user = user2再演示输出
console.log(user.name + '有' + user.money + '金币 ' + user.hp + '生命 ' + user.atk + '攻击力')

2. 对象属性的赋值和读取

把相关的变量存放在一个对象里

这些变量成为了对象的属性

属性跟变量一样可以被赋值

未赋值的变量可以被读但会返回undefined

var user = {// 有初始属性
    name: '吉吉喵', // 属性name, 初始值'吉吉喵'
    money: 10, // 属性money, 初始值10
}

console.log(user.atk) // 返回unefined, 因为atk未被定义
console.log(atk) //变量在这一点则很不一样, 未被定义被引用会报错而不是返回undefined
// 下面赋值写法跟上面的结果一样
var user = {} // 无初始属性
user.name = '吉吉喵' // 后来赋值补上的属性name
user.money = 10 // 后来赋值补上的属性money

// 还可以用方括号包围字符串的语法来写, 这种写法更加灵活, 因为字符串可以用变量或某些运算结果来获得
var user = {} // 无初始属性
user['name'] = '吉吉喵' // 后来赋值补上的属性name
user['money'] = 10 // 后来赋值补上的属性money
console.log(user['name'] + '有' + user['money'] + '金币 ')

// 跟变量一样, 属性也可以进行加减乘除之类的运算
user.money += 10
user.money -= 5 
user.money *= 2
user.money /= 4

// 计算出来的属性名'name'
var prop = 'na' + 'me'
user[prop] = '雷电猴'
console.log(user.name)

//重点知识! 对象属性赋值与读取在box3中的经典用例是自定义一些API没有的玩家属性
world.onPlayerJoin(({ entity }) => {
    entity.money = 100 // 给玩家实体添加money这个新属性, api里是没有money这个属性的
    world.say(`${entity.player.name}有${entity.money}块钱`) //世界播放玩家有多少钱
})

3. 嵌套对象

// 对象里边存放其他对象, 下面的简单例子是模仿我们api里的玩家实体结构
var entity = {
    player: {
        name: '吉吉喵', // 名字
    },
    position: {
        x: 喵,
        y: 128,
        z: 32,
    },
    money: 10,
    hp: 100,
    atk: 20,
}

// 用pos暂存entity.position, 这样下面引用xyz就不用每个都写成entity.position.x entity.position.y entity.position.z 这么冗长
var pos = entity.position

console.log(`${entity.player.name}的位置是${pos.x} ${pos.y} ${pos.z}`)

这节课的知识点就是这样啦

记得把互动作业的答案留在评论区哦~

相关API文档:

https://docs.box3.codemao.cn/

emotion_编程猫_搓头

互动作业

var users = {
    user1: {
        name: '吉吉喵', // 名字
        money: 10, // 金钱
        hp: 100, // 生命值
        atk: 20, // 攻击力
    },
    user2: {
        name: '雷电猴', // 名字
        money: 5, // 金钱
        hp: 50, // 生命值
        atk: 40, // 攻击力
    },
}

var user = {}
console.log(user.name + '有' + user.money + '金币 ' + user.hp + '生命 ' + user.atk + '攻击力')

1.上面的代码如何用较少的改动,改成显示雷电猴的属性状态?

2.如何让吉吉喵和雷电猴的攻击力变成两倍?

3.如何表达吉吉喵被雷电猴攻击了一下?

emotion_编程猫_加油

加入代码岛3.0官方内测Q喵

官网:box3.codemao.cn

 ( =•ω•= )m


回复

上一页1 页 / 共 1下一页
小小爱html小小爱html

shafd

点赞0


评论


蓝冰_E蓝冰_E

板凳

点赞0


评论


指令者指令者

前排

点赞0


评论


高贵的木叶龙A35d高贵的木叶龙A35d

前排

点赞0


评论


无限正义无限正义

前排

点赞0


评论


开心地小电鼠开心地小电鼠

emotion_编程猫_紧张

点赞0


评论


小小瓢虫小小瓢虫

啊哈

点赞1


评论


async_functionasync_function

前排

点赞0


评论


Architect_海绵Architect_海绵

前排()

点赞0


评论


DL1DL1

前排

点赞0


评论


DL1DL1

作业:

1.

//原代码
var users = {
    user1: {
        name: '吉吉喵', // 名字
        money: 10, // 金钱
        hp: 100, // 生命值
        atk: 20, // 攻击力
    },
    user2: {
        name: '雷电猴', // 名字
        money: 5, // 金钱
        hp: 50, // 生命值
        atk: 40, // 攻击力
    },
}

var user = {}
console.log(user.name + '有' + user.money + '金币 ' + user.hp + '生命 ' + user.atk + '攻击力')

2.

//改动后

var users = {
    user1: {
        name: '吉吉喵', // 名字
        money: 10, // 金钱
        hp: 100, // 生命值
        atk: 20, // 攻击力
    },
    user2: {
        name: '雷电猴', // 名字
        money: 5, // 金钱
        hp: 50, // 生命值
        atk: 40, // 攻击力
    },
}

var user = users.user2
console.log(user.name + '有' + user.money + '金币 ' + user.hp + '生命 ' + user.atk + '攻击力')

3.

console.clear()
var users = {
    user1: {
        name: '吉吉喵', // 名字
        money: 10, // 金钱
        hp: 100, // 生命值
        atk: 20, // 攻击力
    },
    user2: {
        name: '雷电猴', // 名字
        money: 5, // 金钱
        hp: 50, // 生命值
        atk: 40, // 攻击力
    },
}

var user1 = users.user1
var user2 = users.user2
console.log(user1.name + '有' + 2 * user1.money + '金币 ' + 2 * user1.hp + '生命 ' + user1.atk + '攻击力')
console.log(user2.name + '有' + 2 * user2.money + '金币 ' + 2 * user2.hp + '生命 ' + user2.atk + '攻击力')
var user1 = users.user1
var user2 = users.user2
nowhp = user1.hp-1
console.log("吉吉喵被雷电候攻击了一下,现在吉吉喵喵 + nowhp+ "生命力")

OK,做完了!!!

emotion_编程猫_加油

点赞1


评论


离谱的正经人离谱的正经人

box3-2gbl2i1oa223446d-1304165404.tcloudbaseapp.com/

点赞0


评论


该账号已被封禁该账号已被封禁

不就是把变量整了个集合么()

点赞0


评论


SKQASKQA

nbnb(话说嵌套没搞懂)

点赞0


评论


梦里觅深海梦里觅深海

点赞1


评论


幽梦子曦幽梦子曦

吉吉,我想学模型旋转

点赞0


评论


asddddasdddd

/*C++代码(控制台)*/
#include<iostream>//头文件
using namespace std;//命名空间
struct User//结构体类型(自定义数据类型)
{
	string name="吉吉喵";
	int m=5, hp=80, atk=30;
	//各项属性
};
int main()//主函数
{
	User n;//定义一个以结构体作为数据类型的变量
	//最终输出结果:名字:吉吉喵 金币: 5 生命值: 80 攻击力:30
	cout <<"名字:"<< n.name << " " <<"金币:"<< " " << n.m <<" "<< "生命值:"<< " " << n.hp << " " <<"攻击力:"<< n.atk;//输出
	return 0;
}

点赞4


评论


迷失冷光迷失冷光

学废了

点赞1


评论


好好康康好康的好好康康好康的

emotion_编程猫_加油emotion_编程猫_加油emotion_编程猫_加油

点赞0


评论


萌新一个萌新一个

好难啊!还是Python简单

点赞0


评论


KationKation

怎么让每名玩家都有一个属性

点赞0


评论


牢四牢四

imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E5%86%B7%E6%BC%A0.gif"alt="emotion_编程猫_冷漠"

点赞0


评论


HIM_PETERHIM_PETER

我学废了

点赞1


评论


请问你作业写完了吗请问你作业写完了吗

吉吉喵,怎样做对话购买东西,出现在背包里,而且能使用,还有我还没有书包,需要书包界面代码。

点赞0


评论


爱玩编程的小白爱玩编程的小白

print("前来考古")

点赞0


评论