博客列表 >实例演示class类与extends/super&&字符串/数组常用API

实例演示class类与extends/super&&字符串/数组常用API

高空中的云
高空中的云原创
2022年11月07日 16:08:46345浏览

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

  • extends 用于类声明或者类表达式中,创建一个类,表示该类是另一个类的子类,例如: class A = {}; class B extends A
  • super 关键字用于访问对象字面量或类的原型([[Prototype]])上的属性,或调用父类的构造函数。

  • 静态成员:属性/方法 static 类(class)通过 static 关键字定义静态方法。不能在类的实例上调用静态方法,而应该通过类本身调用。这些通常是实用程序方法,例如创建或克隆对象的功能。静态属性可以通过对象的属性访问器定义
    mdn 上的例子非常好,直接拿过来了…

  1. class Tripple {
  2. static tripple(n = 1) {
  3. return n * 3;
  4. }
  5. }
  6. class BiggerTripple extends Tripple {
  7. static tripple(n) {
  8. return super.tripple(n) * super.tripple(n);
  9. }
  10. }
  11. console.log(Tripple.tripple());// 3
  12. console.log(Tripple.tripple(6));// 18
  13. let tp = new Tripple();
  14. console.log(BiggerTripple.tripple(3)); // 这里会输出81,因为super..tripple 调用的是Tripple中的tripple方法
  • 类私有域 #private variable/#private function 类属性在默认情况下是公有的,但可以使用增加哈希前缀 # 的方法来定义私有类字段,这一隐秘封装的类特性由 JavaScript 自身强制执行。私有成员不是对象的property,所以不能用索引名访问

  • constructor 是一种用于创建和初始化class创建的对象的特殊方法,一个类中只能有一个

综合实例如下,

  1. class Polygon {
  2. constructor(height, width) {
  3. this.name = 'Rectangle,definitely!';
  4. this.height = height;
  5. this.width = width;
  6. }
  7. //静态成员
  8. static #createdby = 'Dapang'
  9. // 私有属性
  10. #privateattr = 'Private attr(starts with#) told you,'
  11. sayName() {
  12. if(this.height <= 0 || this.width <= 0){
  13. console.log("Are you joking?")
  14. }else{
  15. if(this.height == this.width){
  16. this.name = "Square,brother~"
  17. }
  18. console.log(Polygon.#createdby + ':\n' + this.#privateattr + ' I am a ', this.name + '.');
  19. }
  20. }
  21. get area() {
  22. return this.height * this.width;
  23. }
  24. set area(value) {
  25. this._area = value;
  26. }
  27. }
  28. class Square extends Polygon {
  29. constructor(length) {
  30. super(length,length)
  31. }
  32. get AreaDoubled(){
  33. return super.area * 2;
  34. }
  35. }
  36. let p = new Polygon(100,100)
  37. p.sayName()
  38. // Dapang:
  39. // Private attr(starts with#) told you, I am a Square,brother~.
  40. console.log(p.area) // 10000, get area(){}
  41. let s = new Square(100)
  42. console.log(s.AreaDoubled) // 20000

实例演示字符串,数组常用API

字符串常用api

  1. let s = ' abcekajslkdj123 kjasdklfjdf12 '
  2. const s1 = s.slice(0,4) //切割始末位置: abc
  3. const s2 = s.trim() //去除字符串两端的空白字符:abcekajslkdj123 kjasdklfj
  4. const s3 = s.replacAll(' ', '空格') //用空格替换‘ ’:空格abcekajslkdj123空格kjasdklfj空格
  5. const s4 = s.split(' ') //按照特定字符分割为数组(去除该字符):[ '', 'abcekajslkdj123', 'kjasdklfj', '' ]
  6. const s5 = s.match('j')
  7. // 如果不加全局修饰符/g,则找到第一就会输出,如下所示
  8. /*
  9. [
  10. 'j',
  11. index: 7,
  12. input: ' abcekajslkdj123 kjasdklfj ',
  13. groups: undefined
  14. ]
  15. */
  16. let sss = ' askdjflk123kljlkdf 234kjlsjfd324 2342 lkjlk34 '
  17. const s6 = sss.match(/\d+/g) // [ '123', '234', '324', '2342', '34' ]

数组常用api

  1. // ...rest 压缩与展开
  2. arr = [1, 2, 3]
  3. let arr1 = [...arr] // [1,2,3]
  4. arr = [...arr, 4, 5, 6] // [1,2,3,4,5,6]
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议