Blogger Information
Blog 50
fans 0
comment 0
visits 31557
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
继承与API
手机用户1580651468
Original
327 people have browsed it

继承与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.实现效果图

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
0 comments