博客列表 >1. 实例演示对象与数组的解构赋值 和访问器属性,并描述与普通属性之间的区别与联系

1. 实例演示对象与数组的解构赋值 和访问器属性,并描述与普通属性之间的区别与联系

A 管志岗-电商策划
A 管志岗-电商策划原创
2022年11月09日 15:15:12389浏览

1103 作业

  1. 实例演示对象与数组的解构赋值
  2. 实例演示访问器属性,并描述与普通属性之间的区别与联系

1. 实例演示对象与数组的解构赋值

  1. // 解构赋值
  2. const data = [100, 200]
  3. const a = data[0]
  4. const b = data[1]
  5. console.log(a, b);
  6. // 这种方式low,看第二种
  7. // 1. 数组解构
  8. let [uname, email] = ['杨过', '123@qq.com'];
  9. console.log(uname, email);
  10. // 更新
  11. // 在 [],{},()之前的分号不能省略
  12. [uname, email] = ['小龙女', '1456@qq.com'];
  13. console.log(uname, email);
  14. // 1. 当数组的值数量 < 变量数量, 取得是默认值
  15. [uname, email, gender] = ['管志岗', '134@qq.com']
  16. // [uname, email, gender = '女'] = ['管志岗', '134@qq.com']
  17. // 这样打印的出来没有第三个值gender,成了undefined
  18. console.log(uname, email, gender);
  19. // 当数组的值数量 > 变量数量,取得是 ...rest
  20. console.log('........................当数组的值数量 > 变量数量');
  21. [uname, ...art] = ['管志岗', '134@qq.com', '领导者'];
  22. console.log(uname, art);
  23. // 应用场景:交接二个数
  24. let x = 10;
  25. let y = 20;
  26. console.log(`x = ${x}, y = ${y}`);
  27. [y, x] = [x, y];
  28. console.log(`x = ${x}, y = ${y}`);
  29. // 2. 对象解构
  30. // 变量名 === 属性名
  31. let {num, price} = {num:2, price:5000};
  32. console.log(num, price);
  33. // 实际上每行代码后面都是有 ';', 只是默认不用填写,但是到前面为 [], {}, ()的时候就不能省略了
  34. // 在前一行代码后面如果没有填写分好,就在要执行的代码前面加上分号
  35. // ;({num, price} = {num:2, price:5000})
  36. // {}这个代码块不能在左边(左值),可以加上() 转成表达式
  37. // {num, price} = {num:2, price: 5000} 这样不行的
  38. ({num, price} = {num:2, price:5000});
  39. console.log(typeof (num, price));
  40. // 变量名和赋值名一样
  41. // 命名冲突可以用别名来使用,后面加 ':', 英文冒号
  42. let {pname, price:shop_price} = {pname: '手机', price: 40};
  43. console.log (pname, shop_price);
  44. // 应用场景1: 克隆对象
  45. let lesson = {name: 'ES6', score: 88};
  46. console.log(lesson);
  47. // 如果想创建爱你二个不相关额对象,值又完全一样,只能克隆
  48. console.log('------------------克隆');
  49. let {...obj} = lesson;
  50. console.log(obj);
  51. // 克隆的对象,完全不一样
  52. console.log(obj === lesson);
  53. // 应用场景2:解构传参
  54. // let show = function(user){
  55. // user 是一个对象
  56. // return `${user.uname}: ${user.email}`
  57. // }
  58. // let user = {uname:'朱老师', email: '334@qq.com'}
  59. // console.log(show(user));
  60. // 简化代码
  61. // let show = (user) => `${user.uname}: ${user.email}`
  62. // let user = {uname:'朱老师', email: '334@qq.com'}
  63. // console.log(show(user));
  64. // 简化代码,用属性值来接受
  65. // 使用对象解构进行简化传参
  66. show = ({uname, email}) => `${uname}: ${email}`
  67. user = {uname: '管志岗', email:'890@qq.com'}
  68. console.log(show(user));

实例演示

2. 实例演示访问器属性,并描述与普通属性之间的区别与联系

  1. let course = {
  2. lesson:{
  3. name: 'ES6',
  4. score: '60',
  5. },
  6. // 读取
  7. getScore(){
  8. return {
  9. name:this.lesson.name,
  10. course:this.lesson.score}
  11. },
  12. // 设置接口
  13. setScore(score){
  14. if(score >= 0 && score <= 100){
  15. this.lesson.score = score
  16. }else{
  17. console.log('成绩必须在1-100分之间');
  18. }
  19. }
  20. }
  21. // console.log(course.lesson.score);
  22. console.log(course.getScore());
  23. course.setScore(180);
  24. console.log(course.getScore());
  25. console.log('--------------- 普通方法');
  26. // 用户习惯
  27. // console.log(course.score);
  28. // course.score = 90
  29. // 使用 “访问器属性” 就可以实现
  30. course = {
  31. lesson:{
  32. name: 'ES6',
  33. score: '60',
  34. },
  35. // getScore ===> get score
  36. // 普通方法 ===> 访问器属性
  37. // 如果使用访问器属性,get必须要有,set可选
  38. score: 99,
  39. get score(){
  40. return {
  41. name:this.lesson.name,
  42. course:this.lesson.score}
  43. },
  44. // 将方法伪装为属性,属性化
  45. set score(score){
  46. if(score >= 0 && score <= 100){
  47. this.lesson.score = score
  48. }else{
  49. console.log('成绩必须在1-100分之间');
  50. }
  51. }
  52. }
  53. // 经过包装盒伪造,现在就可以像访问属性一样访问一个方法
  54. // 看着是访问的一个属性,实际也是方法
  55. // course.score ===> course.get score()
  56. console.log(course.score);
  57. course.score = 90
  58. console.log(course.score);
  59. // 访问器属性权重 > 同名属性
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议