一、 get和set
class中 get和set 用于获取属性 和设置属性 ,方法获取和设置
通常不设置和获取和方法同名的属性,防止出现 内存溢出问题
get 和set 针对 构造函数内部已经存在 属性
//该种方法导致程序多次调用Height 造成内存溢出
class People{
constructor(name ="王一",age=18){
this.name=name
this.age=age
}
showInfo(){
console.log(this.name)
}
get Height(){
return "180"
}
set Height(value){
console.log(value)
this.Height=value
}
}
let p1=new People()
console.log(p1.Heighrt)
p1.setName=888
console.log(p1.Heighrt)
//用该种方法则规避内存溢出的问题
class People{
constructor(name ="王一",age=18){
this.name=name
this.age=age
}
showInfo(){
console.log(this.name)
}
get getHeight(){
return "180"
}
set setHeight(value){
console.log(value)
this.Height=value
}
}
let p1=new People()
console.log(p1.getHeighrt)
p1.setName=888
console.log(p1.setHeighrt)
二、静态属性和静态方法
静态属性和静态方法 :由类来直接调用和获取,不需要 实例化对象来实现
数组 : push() .length 静态:属于类的
Array.from() 将集合转化为数组
let lis=document.getElementsByTagName("li")
lis=Array.from(lis) //类具有的方法 静态方法
//forEach 循环遍历数组
lis.forEach(item=>{ //将li的集合直接转化为数组
item.onclick=function(){
console.log(1)
}
})
static 关键字
class People{ //创建类
static size=0 //初始化size atatic 类的静态属性
constructor(){ //实例化对象的属性
this.age=21
//静态属性 size++
People.size++
}
static show(){
console.log("我是静态方法")
}
}
let p1=new People()
let p2=new People()
let p3=new People()
let p4=new People()
let p5=new People()
let p6=new People()
let p7=new People()
let p8=new People()
console.log(p1.age) //21
console.log(People.age) //undefined 因为age是实例化对象的属性
p1.show() //undefinde 应因为stanic定义了show()为类的属性
People.show() //可以使用
console.log(p8.size) // undefinde 因为size是类的属性
console.log(People.size) //8