.
对象

上一讲我们学习了可以存储多个数据的数组,这一讲我们学习另外一种复杂数据类型:对象(Object),包括对象的定义,读写,遍历,和增减。JavaScript 中的所有事物都是对象,包括字符串、数值、数组、函数,你一定哟好好掌握。

定义

JavaScript 中的对象类型是一系列属性和方法的集合。比如一辆车,它有颜色,排量,品牌等属性,且有启动,转向,刹车等方法;每辆车都有这些属性和方法,但他们的值不同。

创建对象变量的方式很简单,把对象的键值对(key-value pair)列表用大括号 {} 包裹起来,键值对之间用逗号 , 分割。你可以把对象理解为一个字典,key 就是字,value 就是字对应的含义。

// 空对象
const empty = {};
// 包含 3 个属性的对象
const intro = {
  name: '0xAA',
  age: 1,
  isDeveloper: true,
};

对象也可以包含方法(函数):

// 包含方法的对象
const wtf = {
  name: `WTF JavaScript`,
  hello: function(){
    return "Hello JavaScript!";
  }
};

读取

你可以使用索引 对象名['key'] 来读取对象的值;也可以直接用 对象.key 来读取。

// 读取属性
console.log(intro['name']); // 注意 `name` 是个字符串,有引号
console.log(intro.name); // 注意这种写法没有引号

对象内部的方法可以用 对象.函数名() 的方式调用:

// 使用函数
console.log(wtf.hello()); // "Hello JavaScript!"

写入

我们可以利用索引来编辑对象的值:

intro.age = 99;
console.log(intro.age); // 99

我们可以使用不存在的索引在对象里引入新的键值对。

// 在 intro 对象中添加 gender 键值对
intro.gender = "male";
console.log(intro.gender); // "male"

遍历

我们可以使用 for-in 循环来实现遍历 key,语法与之前学的循环稍有不同:

for(let key in intro){
  console.log('data '+ key + ': ' + intro[key])
}
// data name: 0xAA
// data age: 99
// data isDeveloper: true
// data gender: male

我们也可以使用 Object.keys(对象) 来获取对象中所有键,然后通过 for 循环遍历所有键值对。这个方法比较复杂,不推荐。

const keys = Object.keys(intro);
for(let i = 0; i < keys.length; i++){
  console.log('data '+ keys[i] + ': ' + intro[keys[i]])
}

删除

你可以使用 delete 关键字来删除对象中的键值对

delete wtf.name;
// 或 delete wtf["name"];
console.log(Object.keys(wtf)); // hello

习题

补全下面的 isDev 函数,完成逻辑,当输入的对象 obj 的 isDeveloper 属性为 true 时,返回 true,否则返回 false。

function isDev(obj){

}

const obj1 = {
  name: "0xAA",
  isDeveloper: true,
}
const obj2 = {
  name: "Trump",
}
console.log(isDev(obj1)); // 应该输出 true
console.log(isDev(obj2)); // 应该输出 false

总结

这一讲我们介绍了 Javascript 中的对象,包括定义,读取,写入,遍历,和删除。JavaScript 中的所有事物都是对象,包括字符串、数值、数组、函数,你一定哟好好掌握。

PreviousNext

JavaScript 101

1. Hello JavaScript
2. 声明变量
3. 常用类型
4. 运算符
5. 函数
6. 条件语句
7. 循环
8. 数组
9. 对象
10. 异步