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

久违的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文档:

互动作业:
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.如何表达吉吉喵被雷电猴攻击了一下?

加入代码岛3.0官方内测Q喵
( =•ω•= )m
DL1作业:
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,做完了!!!

点赞1
评论
asdddd/*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
评论
牢四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
评论