// 集合
let s = new Set();
s.add('diyige');
console.log(s);
const arr = [1,2,2,4,3,3,6]
let s1 = new Set(arr)
let result = [...s1]
console.log(result);
// Map
let m = new Map()
m.set('name', [1,2,3])
console.log(m);
- 集合:声明:new Set(可有参数,数组);add(元素):添加;delete(元素):删除;has(元素):查找;clear:清空;集合中会自动去除重复的元素,因此可以用于数组去重;
- Map:类对象,键值对集合;new Map();set(‘键名’, ‘键值’):添加元素;size:属性,查看元素里的个数;delete:删除;clear:清空,可以用for of遍历;
// 类
class Phone {
static name = '手机'
static def() {
console.log('我是不一样的');
}
constructor(name,price) {
this.name = name
this.price = price
}
call() {
console.log('我可以打电话');
}
}
let huawei = new Phone('hauwei', 2400)
huawei.call()
console.log(huawei);
console.log(Phone.name);
// 类继承
class Father {
constructor(name, price) {
this.name = name
this.price = price
}
// 类似构造函数挂载在原型上的方法
call() {
console.log('我是父类方法');
}
}
class Son extends Father {
constructor(name,price, color, type) {
// 继承父类属性
super(name, price)
this.color = color
this.type = type
}
game() {
console.log('玩游戏');
}
}
let son = new Son('华为',4000,'绿色','荣耀20se')
console.log(son);
son.call()
son.game()
// get和set
class Test {
get price() {
console.log('属性被读取了');
return '结果'
}
set price(newVal) {
console.log('属性被修改了');
}
}
let tes = new Test()
console.log(tes.price);
tes.price = 'qitashuxing'
console.log(tes.price);
class:类;
- 类就相当于之前的构造函数,只是写法不一样, class 类名 {constructor(参数) {构造函数内容} 函数名() {构造函数方法,之前挂载在原型上}},constructor是用来写属性的,名字不能改,下面都可以写方法;
- 静态成员:实例对象和函数对象的属性是不可以互用的,只可以实例使用函数原型上的,函数对象的属性就是属性函数的,它的方法也是属于它自己的,这样的就是静态属性;类中的静态属性需要用关键字static来声明,和函数中的一样;
- 前面学的构造函数组合继承和类的继承一样,类继承写法更简单;类中class Son extends Father {constructor(子类属性名) {super(父类有的属性名) ;子类自己的方法}
- 子类对父类方法的重写:子类声明一个和父类同名的方法,对方法进行修改;
- get和set:get,方法值就是返回的结果,set必须有一个参数newVal;