diff --git "a/03\346\236\227\345\261\225/20231103/\345\257\271\350\261\241\345\237\272\347\241\200.md" "b/03\346\236\227\345\261\225/20231103/\345\257\271\350\261\241\345\237\272\347\241\200.md" new file mode 100644 index 0000000000000000000000000000000000000000..ca6f6dae3f8797bc9a626dfaab24dbf0a58e9ff7 --- /dev/null +++ "b/03\346\236\227\345\261\225/20231103/\345\257\271\350\261\241\345\237\272\347\241\200.md" @@ -0,0 +1,211 @@ +# 笔记 + +### 对象 + +> 万物皆为对象 +> +> 在JavaScript中,对象就是一组无序的相关属性和相关方法的集合,所有事物都是对象 +> +> 保存一个值,可以用变量;保存一组数据,可以用数组;保存一个事物的完整信息,只能用对象。 +> +> #### 属性 +> +> 指对象的特征,类似什么身高,性别什么的 +> +> #### 方法 +> +> 指对象的功能,类似打电话,砸核桃什么的 +> +> #### 声明对象 +> +> 1. ###### 字面量 +> +> ```js +> //这个是最常见的命名方法 +> +> //声明一个空对象 +> let 对象名={} +> +> //声明一个对象 +> let 对象名={ +> 键:值,//这个是属性 +> 键:值, +> 键:匿名函数,//这个是方法 +> 键:匿名函数 +> } +> //键相当于属性名; +> //值相当于属性值,可以是任意类型的值 +> //多个属性和值用`,`隔开 +> ``` +> +> 2. ###### new object +> +> ```js +> let 对象名=new object(); +> ``` +> +> 3. ###### 用构造函数创建对象(了解)![](https://img-blog.csdnimg.cn/214fbd6031234cb4b4a0ec1410c3b8fa.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16) +> +> ![](https://img-blog.csdnimg.cn/043e2cb2fe9e4e8bae68e773202e7800.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ben5YWL5YqbY29kZQ==,size_20,color_FFFFFF,t_70,g_se,x_16) +> +> #### 对象中属性的增删改查 +> +> ###### 增 +> +> ```js +> //增加属性 +> 对象名.新属性=新属性值; +> ``` +> +> ###### 删 +> +> ```js +> //删除属性 +> delete 对象名.属性 +> ``` +> +> ###### 改 +> +> ```js +> //修改属性值 +> 对象名.属性名=新属性值 +> ``` +> +> ###### 查 +> +> ```js +> //一般情况 +> 对象名.属性名 +> +> //没有确定的属性名,需要用变量调用时 +> 对象名[变量] +> +> //属性名含有特殊字符或者关键字无法直接调用时 +> 对象名[`属性名/值`] +> ``` +> +> #### 对象中方法的增删改查 +> +> 其实操作方法和属性差不多 +> +> 且在方法中也有 +> +> ```js +> 对象名.方法名 和 对象名[`方法名`] +> ``` +> +> 还有在方法中调用自己找个对象里面属性的办法:`this.属性名` +> +> #### 遍历对象 +> +> 1. `for in`: +> +> ```js +> for(let 变量 in 对象) +> //其中调用那个变量就可以直接调用到对象里面的变量 +> ``` +> +> 2. `object`类型的几个方法 +> +> ```js +> //Object.keys 方法返回一个由对象自身的可枚举属性组成的数组。可以对这个数组使用 forEach 或 for 循环来遍历对象的属性。 +> const obj = {a: 1, b: 2, c: 3}; +> +> Object.keys(obj).forEach(function(prop) { +> console.log(`${prop}: ${obj[prop]}`); +> }); +> // 输出: +> // a: 1 +> // b: 2 +> // c: 3 +> ``` +> +> ```js +> //Object.values 方法返回一个由对象自身的可枚举属性值组成的数组。可以对这个数组使用 forEach 或 for 循环来遍历对象的属性值。 +> const obj = {a: 1, b: 2, c: 3}; +> +> Object.values(obj).forEach(function(value) { +> console.log(value); +> }); +> // 输出: +> // 1 +> // 2 +> // 3 +> ``` +> +> ```js +> //Object.entries 方法返回一个由对象自身的可枚举属性键值对组成的数组。可以对这个数组使用 forEach 或 for 循环来遍历对象的属性和属性值。 +> const obj = {a: 1, b: 2, c: 3}; +> +> Object.entries(obj).forEach(function([prop, value]) { +> console.log(`${prop}: ${value}`); +> }); +> // 输出: +> // a: 1 +> // b: 2 +> // c: 3 +> ``` +> +> ```js +> 需要注意的是,以上方法都只能遍历到对象的可枚举属性。如果要遍历对象的所有属性,包括不可枚举属性和原型链上的属性,可以使用 Object.getOwnPropertyNames 和 Reflect.ownKeys 方法。 +> ``` +> +> + +# 作业 + +练习题2: + +声明对象 + +目的: 复习对象的声明 + +要求: + +1. 声明一个变量per, 类型为对象类型 +2. 该对象的属性为性别,年龄,爱好(3个) +3. 该对象的方法有 说话, 吃饭(2个) +4. 在控制台分别调用该对象的属性和方法 + +```js +let per = { + sex: `男`, + age: 18, + hobby: `玩游戏`, + + dospeak: function () { + return `在说话`; + }, + + doeat: function () { + return `在吃饭`; + } +}; +console.log(per.sex); +console.log(per.age); +console.log(per.hobby); +console.log(per.dospeak()); +console.log(per.doeat()); +``` + +### 练习题3: + +调用对象的方法 + +目的: 复习对象的使用 + +要求: + +1. 对象声明完毕后, 调用对象中的吃饭的方法 +2. 提示: 对象中的方法本质是函数, 调用需要加() +3. 方法也可以传递参数的 + +```js +let per = { + doeat: function (name) { + return `${name}在吃饭`; + } +}; +console.log(per.doeat(`杨毅`)); +``` +