实例演示class类与extends,super等的用法
extends
用于类声明或者类表达式中,创建一个类,表示该类是另一个类的子类,例如:class A = {}; class B extends A
super
关键字用于访问对象字面量或类的原型([[Prototype]])
上的属性,或调用父类的构造函数。静态成员:属性/方法 static
类(class)通过 static 关键字定义静态方法。不能在类的实例上调用静态方法,而应该通过类本身调用。这些通常是实用程序方法,例如创建或克隆对象的功能。静态属性可以通过对象的属性访问器定义
mdn 上的例子非常好,直接拿过来了…
class Tripple {
static tripple(n = 1) {
return n * 3;
}
}
class BiggerTripple extends Tripple {
static tripple(n) {
return super.tripple(n) * super.tripple(n);
}
}
console.log(Tripple.tripple());// 3
console.log(Tripple.tripple(6));// 18
let tp = new Tripple();
console.log(BiggerTripple.tripple(3)); // 这里会输出81,因为super..tripple 调用的是Tripple中的tripple方法
类私有域 #private variable/#private function
类属性在默认情况下是公有的,但可以使用增加哈希前缀 # 的方法来定义私有类字段,这一隐秘封装的类特性由 JavaScript 自身强制执行。私有成员不是对象的property,所以不能用索引名访问constructor
是一种用于创建和初始化class创建的对象的特殊方法,一个类中只能有一个
综合实例如下,
class Polygon {
constructor(height, width) {
this.name = 'Rectangle,definitely!';
this.height = height;
this.width = width;
}
//静态成员
static #createdby = 'Dapang'
// 私有属性
#privateattr = 'Private attr(starts with#) told you,'
sayName() {
if(this.height <= 0 || this.width <= 0){
console.log("Are you joking?")
}else{
if(this.height == this.width){
this.name = "Square,brother~"
}
console.log(Polygon.#createdby + ':\n' + this.#privateattr + ' I am a ', this.name + '.');
}
}
get area() {
return this.height * this.width;
}
set area(value) {
this._area = value;
}
}
class Square extends Polygon {
constructor(length) {
super(length,length)
}
get AreaDoubled(){
return super.area * 2;
}
}
let p = new Polygon(100,100)
p.sayName()
// Dapang:
// Private attr(starts with#) told you, I am a Square,brother~.
console.log(p.area) // 10000, get area(){}
let s = new Square(100)
console.log(s.AreaDoubled) // 20000
实例演示字符串,数组常用API
字符串常用api
let s = ' abcekajslkdj123 kjasdklfjdf12 '
const s1 = s.slice(0,4) //切割始末位置: abc
const s2 = s.trim() //去除字符串两端的空白字符:abcekajslkdj123 kjasdklfj
const s3 = s.replacAll(' ', '空格') //用空格替换‘ ’:空格abcekajslkdj123空格kjasdklfj空格
const s4 = s.split(' ') //按照特定字符分割为数组(去除该字符):[ '', 'abcekajslkdj123', 'kjasdklfj', '' ]
const s5 = s.match('j')
// 如果不加全局修饰符/g,则找到第一就会输出,如下所示
/*
[
'j',
index: 7,
input: ' abcekajslkdj123 kjasdklfj ',
groups: undefined
]
*/
let sss = ' askdjflk123kljlkdf 234kjlsjfd324 2342 lkjlk34 '
const s6 = sss.match(/\d+/g) // [ '123', '234', '324', '2342', '34' ]
数组常用api
// ...rest 压缩与展开
arr = [1, 2, 3]
let arr1 = [...arr] // [1,2,3]
arr = [...arr, 4, 5, 6] // [1,2,3,4,5,6]