Blogger Information
Blog 43
fans 4
comment 0
visits 19260
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
js入门之访问器属性/构造函数/类/解构赋值实例演示
汇享科技
Original
849 people have browsed it

1.对象字面量与访问器属性

声明对象字面量的两种方式:
l5x7zc20.png
访问器属性实例演示
l5x8dasg.png

  1. //对象字面量与访问器属性
  2. //声明对象的两种方式
  3. //1.声明时添加好所需属性
  4. let obj1 = {
  5. data: {
  6. name: "小王",
  7. age: 20,
  8. },
  9. //这样获取会比较麻烦读取里面的数据咱们可以声明两个访问接口声明一个读一个写
  10. getName: function () {
  11. return this.data.name;
  12. },
  13. setName: function (v) {
  14. this.data.name = v;
  15. },
  16. };
  17. console.log(obj1.getName());
  18. //使用访问接口更新obj内的数据
  19. obj1.setName("小刘");
  20. console.log(obj1.getName());
  21. console.log("---------------------");
  22. //2.逐个添加
  23. let obj2 = {};
  24. obj2.data = {};
  25. obj2.data.name = "小黄";
  26. obj2.data.age = 50;
  27. obj2.getName = function () {
  28. return this.data.name;
  29. };
  30. obj2.setName = function (v) {
  31. this.data.name = v;
  32. };
  33. console.log(obj2.getName());
  34. //使用访问接口更新obj内的数据
  35. obj2.setName("小夏");
  36. console.log(obj2.getName());
  37. console.log("----------------------");
  38. let obj3 = {
  39. data: {
  40. name: "汇享",
  41. age: 18,
  42. },
  43. //这就是访问器属性
  44. get dqname() {
  45. return this.data.name;
  46. },
  47. set xgname(v) {
  48. this.data.name = v;
  49. },
  50. };
  51. console.log(obj3.dqname);
  52. //使用访问器属性更新obj3内的数据
  53. obj3.xgname = "祥宏";
  54. console.log(obj3.dqname);

2.构造函数与类

2.1 构造函数
l5xbroge.png

  1. //生成一个构造函数用于创建一个对象 传两个参数
  2. let User = function (name, email) {
  3. //私有成员
  4. let a = 10;
  5. //初始化属性
  6. //自有成员
  7. this.name = name;
  8. this.email = email;
  9. };
  10. //将这个方法挂载到构造函数的原型属性上
  11. //共享成员
  12. User.prototype.getUser = function () {
  13. return `${this.name}:${this.email}`;
  14. };
  15. let user = new User("王", "wang@qq.com");
  16. console.log(user.getUser());
  17. let user1 = new User("刘", "liu@qq.com");
  18. console.log(user1.getUser());
  19. //静态成员
  20. User.age = 10;
  21. console.log(User.age);
  22. //继承
  23. //声明一个父级构造函数
  24. let F = function () {};
  25. // 挂载打父级的原型属性上
  26. F.prototype.sum = function (a, b) {
  27. return this.a + this.b;
  28. };
  29. // 声明一个子类构造函数
  30. let F1 = function (a, b) {
  31. this.a = a;
  32. this.b = b;
  33. };
  34. // 继承父类的原型属性
  35. F1.prototype = F.prototype;
  36. let f1 = new F1(100, 200);
  37. console.log(f1.sum());

2.2 类
其实js中没有类,类也就是js中的函数 实例演示:
l5xg96k0.png

  1. // 声明一个Demo类
  2. class Demo1 {
  3. // 构造方法,实例初始化
  4. constructor(name, email) {
  5. // 这是类中的自有属性
  6. this.name = name;
  7. this.email = email;
  8. }
  9. //这是共享成员:已经挂载到原型属性上了
  10. getInfo() {
  11. return `${this.name}:${this.email}`;
  12. }
  13. //共享成员
  14. username = "小王吧";
  15. // 这是静态成员
  16. static age = 18;
  17. }
  18. //实例化
  19. const demo1 = new Demo1("小黄吧", "xiaohuang@qq.com");
  20. //查看实例化后的对象
  21. console.log(demo1);
  22. //访问共享成员
  23. console.log(demo1.username);
  24. //访问静态成员
  25. console.log(Demo1.age);
  26. //公共属性
  27. console.dir(Demo1.prototype);
  28. //自有成员
  29. console.log(demo1.getInfo());
  30. console.log("----------------");
  31. //继承
  32. //声明一个子类 extends继承关键字
  33. class Demo2 extends Demo1 {
  34. constructor(name, email, sex) {
  35. //super()会自动调用父类的构造器来初始化该实例
  36. super(name, email);
  37. this.sex = sex;
  38. }
  39. //对getinfo方法进行扩展
  40. getInfo() {
  41. return `${super.getInfo()},${this.sex}`;
  42. }
  43. }
  44. const demo2 = new Demo2("小刘吧", "xiaoliu@qq.com", "男");
  45. console.log(demo2.getInfo());

3.解构赋值

l5xif0w6.png

  1. // 1.数组解构
  2. //语法模板=值(可以是对象可以是数组)
  3. let [mingzi, nianling] = ["老王", 18];
  4. //更新
  5. console.log([mingzi, nianling]);
  6. [mingzi, nianling] = ["老黄", 20];
  7. // 默认需要对应起来 如果参数过多或者参数过少就需要给默认值或者压缩
  8. console.log([mingzi, nianling]);
  9. //参数过少
  10. let [a, b, c, d = 4] = [1, 2, 3];
  11. console.log([a, b, c, (d = 4)]);
  12. //参数过多
  13. [a, b, c, d, ...arr] = [1, 2, 3, 4, 5, 6, 7];
  14. console.log([a, b, c, d, arr]);
  15. // 2.对象解构
  16. let { id, name, email } = {
  17. id: 1,
  18. name: "小王",
  19. email: "xiaowang@qq.com",
  20. };
  21. console.log({ id, name, email });
  22. //更新对象中的数据
  23. ({ id, name, email } = {
  24. id: 2,
  25. name: "小刘",
  26. email: "xiaoliu@qq.com",
  27. });
  28. console.log({ id, name, email });
  29. //如果模板变量存在重复名就可以起一个别名
  30. let {
  31. id: itemid,
  32. name: itemname,
  33. email: itememail,
  34. } = {
  35. id: 3,
  36. name: "小黑",
  37. email: "xiaohei@qq.com",
  38. };
  39. console.log(itemid, itemname, itememail);
  40. //使用对象解构优化函数声明
  41. let user = { id: 4, name: "小白", email: "xiaobai@qq.com" };
  42. function fun({ id, name, email }) {
  43. console.log(id, name, email);
  44. }
  45. fun(user);
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
1 comments
           2022-07-23 14:42:01
老铁 666
1 floor
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!