博客列表 >继承与API

继承与API

手机用户1580651468
手机用户1580651468原创
2022年11月07日 18:57:59314浏览

继承与API

一、实例演示class类与extends,super等的用法

  1. JavaScript 语言中,生成实例对象的传统方法是通过构造函数。 ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。基本上,ES6 class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰更像面向对象编程的语法而已。所以ES6 的类,完全可以看作构造函数的另一种写法。

一)extends

1.基本概念

  1. class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要简洁很多。子类中可以没有构造函数,系统会默认提供一个。子类如果提供了构造函数就必须显示调用supersuper函数类似于之前的借用构造函数。子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类自己的this对象,必须先通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法,然后再对其进行加工,加上子类自己的实例属性和方法。如果不调用super方法,子类就得不到this对象。

二)super

1.基本概念

super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。
第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。
第二种情况,super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。
需要注意,由于super指向父类的原型对象,所以定义在父类实例上的方法或属性,是无法通过super调用的。

三).实例代码

  1. console.log("------------------");
  2. // 类声明
  3. let User = class {
  4. constructor(uname, email) {
  5. this.uname = uname;
  6. this.email = email;
  7. }
  8. say() {
  9. return `${this.uname}: (${this.email})`;
  10. }
  11. static nation = "CHINA";
  12. };
  13. // 类的实例化
  14. const user = new User("潘金莲", "pjl@qq.com");
  15. console.log(user.say());
  16. console.log("------------------");
  17. // 继承
  18. class Child extends User {
  19. constructor(uname, email, sex) {
  20. // super 调用父类成员
  21. super(uname, email);
  22. this.sex = sex;
  23. }
  24. say() {
  25. return `${super.say()},(${this.sex})`;
  26. }
  27. }
  28. const child = new Child("灭绝", "mj@qq.com", "女");
  29. console.log(child.say());
  30. // 在类中使用“访问器属性”
  31. const Stu = class {
  32. #age = 18;
  33. // 访问器属性
  34. // 1,读,获取器get
  35. get age() {
  36. return this.#age;
  37. }
  38. // 2.写,设置器set
  39. set age(age) {
  40. if (age >= 18 && age <= 100) {
  41. this.#age = age;
  42. } else {
  43. console.log("年龄必须在18-100之间");
  44. }
  45. }
  46. };
  47. let stu = new Stu();
  48. console.log("age=", stu.age);
  49. console.log("------------------");
  50. stu.age = 30;
  51. console.log("age=", stu.age);
  52. console.log("------------------");

四).实现的效果图

二、 实例演示字符串,数组常用API (至少5个以上)

一)字符串api

1代码

  1. // 字符串API
  2. let str = "PHP中文网";
  3. // 1.length属性
  4. console.log("length=", str.length);
  5. // 2.charAt(),索引->成员
  6. console.log(str.charAt(4));
  7. console.log(str[4]);
  8. // 3.index0f:成员->索引
  9. console.log(str.indexOf("中"));
  10. console.log(str.indexOf("王"));
  11. console.log(str.includes(`朱`));
  12. // 4.concat:拼装
  13. console.log(str.concat("[", "www.php.cn", "]"));
  14. //5.replace()替换
  15. console.log(str.replace("中文网", ".cn"));
  16. // 6.substr(),必须去掉(忽略)结束索引
  17. console.log(str.substr(0, 3));
  18. console.log(str.substring(0, 3));
  19. // 7.split字符串转数组
  20. console.log(str.split());
  21. console.log(str.split(``));
  22. console.log(str.split(``, 3));
  23. // 8.大小写
  24. console.log(`PHP.CN`.toLowerCase());
  25. console.log(`www.php.cn`.toUpperCase());
  26. // 9.html
  27. console.log(str.link("https://www.php.cn"));
  28. <a href="https://www.php.cn">PHP中文网</a>;

2实现的效果图

二)数组的api

1.代码

  1. let arr = [1, 2, "a", "b", true, { x: 1, y: 2 }, [1, 2, 3], function () {}];
  2. console.log(arr);
  3. // ...rest压缩与展开
  4. // fn.apply(null,[1,2,3])
  5. arr = [1, 2, 3];
  6. let arr1 = [...arr];
  7. console.log(arr1);
  8. arr = [...arr, 4, 5, 6];
  9. console.log(arr);
  10. console.log("----------------------");
  11. //array.of 打包
  12. let items = [1, 2, 3, 4, 5, 6];
  13. console.log(Array.of(...items));
  14. console.log("----------------------");
  15. //array.from():类数组(对象)->包装成一个真正的数组
  16. const likeArr = {
  17. 0: "red",
  18. 1: "blue",
  19. 2: "green",
  20. length: 3,
  21. };
  22. const data = Array.from(likeArr);
  23. console.log(Array.isArray(data) ? "Array" : "No Array");
  24. for (let item of data) {
  25. console.log(item);
  26. }

2.实现效果图

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议