// 任何一个类 ,它的内部都是以 constructor 方法开始的
class Parent{
constructor(name="wukong",weapon){
this.name=name
this.weapon = weapon
}
getName(){ // get方法,获取实例对象中的属性(不定义也可以,定义只是为了对获得的数据做修改)
console.log(this.name)
}
setName(value){ // set方法,设置或修改实例对象中的属性(不定义也可以,定义只是为了对要设置的数据做修改)
this.name = value
}
static tell(){ // 定义静态方法时,使用static 关键字
console.log('tell')
}
}
Parent.story = '西游记'; //定义静态属性,静态属性没有关键字,所以在定义了类之后,直接添加
Parent.tell(); //调用静态方法的时候,是在 类 上调用,而不是在 实例 上调用
console.log(Parent.story); // 查看静态属性,同样也是在 类 上查看
var obj = new Parent('sunwk','jingubang!')
console.log(obj); // {name: "sunwk", weapon: "jingubang!"}
obj.getName(); // sunwk
obj.setName('tangsanzang')
console.log(obj); //{name: "tangsanzang", weapon: "jingubang!"}
class Child extends Parent{
constructor(name="bajie",weapon ){ // 指定了这个方法传入的参数,以及它的默认值
super(name) // 使用super()的时候,就相当于调用了父类中的constructor
// 并将子类中的name传入,覆盖父类中的name
this.weapon = "dingpa!" // 如果子类中需要添加新的属性,必须在 super() 之后写
}
}
var obj1 = new Child();
console.log(obj1) // {name: "bajie", weapon: "dingpa!"}
网友评论