JS类的继承
程序员文章站
2024-02-20 20:20:05
...
目录
JS类
写类
{
class Parent{
constructor(name="jini"){
this.name=name;
}
}
var v_parent=new Parent();
console.log(v_parent);
}
继承
就以上面的Parent类为父类,写一个Studnet继承他
{
class Parent{
constructor(name="jini"){
this.name=name;
}
}
class Student extends Parent{
constructor(name,age){
super(name);
this.age=age;
}
}
var st = new Student("jjj",22);
console.log(st);
//{name: "jjj", age: 22}
}
使用extends以后会继承父类的所有的属性
get/set
{
class Parent{
constructor(name="jini"){
this.name=name;
}
get aname(){
return this.name;
}
set aname(value){
this.name=value;
}
}
var pp = new Parent();
pp.aname="jinjinjinjkin";
console.log(pp.aname);
//jinjinjinjkin
//给了参数调用set方法,不给参数调用的就是个get方法
//set和get必须同名但是不能跟参数名字相同
}
//给了参数调用set方法,不给参数调用的就是个get方法
//set和get必须同名但是不能跟参数名字相同
Static
方法static修饰
被static修饰的方法可以直接用类名调用,不用实例化类对象
{
class Parent{
constructor(name,age){
this.name=name;
this.age=age;
}
static tell(){
console.log(123);
}
}
//被static修饰的方法可以直接用类名调用,不用实例化类对象
Parent.tell();
//123
}
属性static修饰(特殊)
{
class Parent{
constructor(name,age){
this.name=name;
this.age=age;
}
}
Parent.sex="男";
console.log(Parent.sex);
let pp = new Parent("JIN",22);
console.log(pp.sex);//undefined
静态属性不能被实例对象调用,即通过以new
操作符实例化后的对象调用,如上例中的obj调用,只能通过类名调用,即Obj调用
}
Parent.sex="";这就是给这个类定义了一个static属性,该属性不能被实例化以后的对象调用,只能用类名调用,并且,所有的操作修改的是同一个属性参数,该参数在最开始的时候被加载