大家好,我是阿赵。继续学习JavaScript,这次学习一下对象。
一、 什么是对象
我们经常听到面向对象编程这个说法,这个对象是什么呢?
对象是一种数据类型,是无序的数据集合。
特点:
- 无序数据集合
- 可以详细的描述某件事情。
我们可以声明一个对象,对象里面可以有属性,还可以有函数。
比如:
let player1 = {
name: 'azhao',
age: 18,
say: function() {
console.log(this.name);
}
}
player1.say();
这里player1就是一个对象,这个对象里面,有对象的名字,叫做azhao,有对象的年龄,是18岁。然后这个对象还提供了一个叫做say的方法,在外部可以调用say方法,它就会打印出player1的名字。
我们得到了player1,实际上就是得到了关于这个player1的所有属性参数和方法,而如果player1需要增加其他属性,都是在player1内部去操作,不需要涉及到外部的代码。
二、 声明对象的方法
1. 声明一个空对象
如果是想声明一个完全没有内容的空对象,可以这样:
let player1 = {};
或者
let player1 = new Object();
这时候对象是没有内容的,可以后期添加
2. 声明有内容的对象
let player1 = {
name: '阿赵',
age: 18,
sex: '男'
}
在声明的时候,大括号里面可以写对应的“属性名:属性值”或者“方法名:函数”。多个属性之间,用逗号分隔。
三、 对象的常用操作
1、 查找属性
let player1 = {
name: '阿赵',
age: 18,
}
console.log(player1.name);
console.log(player1.age);
结果:

可以看到,想查询对象的属性值,直接“对象.属性名”就可以了
2、 修改属性
let player1 = {
name: '阿赵',
age: 18,
}
player1.age = 20;
console.log(player1);
结果:

可以看到,age被改成20了,所以想修改属性值,也是直接“对象.属性名”就可以了
3、 新增属性
let player1 = {
name: '阿赵',
age: 18,
}
player1.sex = '男';
console.log(player1);
结果:

可以看到,一开始player1没有sex属性,后面添加了之后,就有了,所以想新增属性,也是直接“对象.属性名”就可以了。
4、 删除属性
let player1 = {
name: '阿赵',
age: 18,
sex: '男'
}
delete player1.age;
console.log(player1);
结果:

可以看到,如果想删除对象的某个属性,可以用“delete 对象.属性名”
四、 构造函数
之前构造一个player1,需要
let player1 = {
name: '阿赵',
age: 18,
sex: '男'
}
如果我们需要再构建一个属性数量一样,只是属性值不一样的对象,还要:
let player2 = {
name: '张三',
age: 19,
sex: '男'
}
然后如果要增加删除属性数量,还要逐个去修改创建的方法。这明显是不合理的。
所以我们可以通过构造函数来生成对象。比如:
function Player(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
let player1 = new Player('阿赵', 18, '男');
let player2 = new Player('张三', 19, '男');
let player3 = new Player('李四', 20, '男');
console.log(player1);
console.log(player2);
console.log(player3);
结果:

我们定义了一个函数叫做Player,然后传入了3个参数,通过new这个Player函数,就返回了一个Player的对象,里面有我们想要的各种属性了。
五、 遍历对象
如果我们想把对象里面的所有属性都遍历一遍,可以使用for语句。比如
function Player(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
let player1 = new Player('阿赵', 18, '男');
for (let key in player1) {
console.log(key); // key 变量 输出 得到的是 属性名
console.log(player1[key]); // obj[k] 得到是 属性值
}
结果:


234

被折叠的 条评论
为什么被折叠?



