1 对象的基本使用
- 在数据类型中我们提到还有一种特别的类型:对象类型。
- 对象类型涉及到 JavaScript 的各个方面,所以掌握对象类型非常重要;
- 对象类型是一种存储键值对(key-value)的更复杂的数据类型;
- 为什么需要对象类型呢?
- 基本数据类型可以存储一些简单的值,但是现实世界的事物抽象成程序时,往往比较复杂;
- 比如一个人,有自己的特性(比如姓名、年龄、身高),有一些行为(比如跑步、学习、工作);
- 比如一辆车,有自己的特性(比如颜色、重量、速度),有一些行为(比如行驶);
- 方法和函数的概念
- 函数(function): 如果在JavaScript代码中通过function默认定义一个结构, 称之为是函数
- 方法(method): 如果将一个函数放到对象中, 作为对象的一个属性, 那么将这个函数称之为方法.
- 对象使用快速入门
var person = { // key: value name: "bajie", age: 28, height: 1.60, "my friend": { name: "kobe", age: 30 }, run: function() { console.log("running") }, eat: function() { console.log("eat foods") }, study: function() { console.log("studying") } }
key: 字符串类型, 但是在定义对象的属性名时, 大部分情况下引号都是可以省略的
但如果是像上面中的 'my friend' 这么写的时候就不能省略
2 对象的创建方式
// 1.对象字面量 var obj1 = { name: "why" } // 2.new Object() // Object构造函数 var obj2 = new Object() obj2.name = "kobe" // // 3.new 其他类() function Person() {} var obj3 = new Person()
3 对象的常见操作
1.定义了一个对象
var info = { name: "bajie", age: 28, friend: { name: "kobe", age: 30 }, running: function() { console.log("running~") } }
2.访问对象中的属性
console.log(info.name) console.log(info.friend.name) info.running()
3.修改对象中的属性
info.age = 25 info.running = function() { alert("I am running~") } console.log(info.age) info.running()
4.添加对象中的属性
info.height = 1.6 info.studying = function() { console.log("I am studying~") } console.log(info)
5.删除对象中的属性(delete关键字(操作符))
delete info.age delete info.height console.log(info)
4 方括号的使用
- 为什么需要使用方括号呢?
- 对于多次属性来说,JavaScript是无法理解的。
info.good friend = 'bajie'
- 这是因为点符号要求 key 是有效的变量标识符
- 不包含空格,不以数字开头,也不包含特殊字符(允许使用 $ 和 _);
- 这个时候我们可以使用方括号:
- 方括号运行我们在定义或者操作属性时更加的灵活;
var obj = { name: "bajie", "my friend": "kobe", "eating something": function() { console.log("eating~") } } console.log(obj["my friend"]) console.log(obj.name) console.log(obj["name"]) // obj["eating something"]() var eatKey = "eating something" obj[eatKey]()
5 对象的遍历
// 对对象进行遍历 // 1.普通for循环 var infoKeys = Object.keys(info) for (var i = 0; i < infoKeys.length; i++) { var key = infoKeys[i] var value = info[key] console.log(`key: ${key}, value: ${value}`) } // 2.for..in..: 遍历对象 for (var key in info) { var value = info[key] console.log(`key: ${key}, value: ${value}`) }