
属性读写 - getter & setter
getter和setter的作用就是可控的读写
有条件的写入是很有必要的
// age属性读写[这里写法涉及闭包]let _age = 0.1const _smallChickenAge = 0.3// 设置小鸡的岁数常量是0.3年class Chicken {constructor (type) {this.type = type}// get就是读属性的方法// getter就是这个get age () {return _age}// set就是写属性的方法// setter就是这个set age (val) {if (val < _smallChickenAge) {_age = _smallChickenAge} else _age = val}}// 创建实例对象miu小鸡let miu = new Chicken('chicken')console.log(miu.age)// 测试一下年龄读写miu.age = 0.2console.log(miu.age)miu.age = 0.9console.log(miu.age)
静态方法 - static
静态方法 static类方法
静态方法 绝缘 实例对象!
静态方法只在类上,不在实例对象上!
// 还是用小鸡类做例子class Chicken {constructor (type) {this.type = type}eat () {Chicken.walk()// 使用类的静态方法// 静态方法在类上的// 不是在实例对象上的console.log('eat Chicken food')}static walk () {// static 关键字就是静态方法console.log('chicken walking')}}// 创建实例let miu = new Chicken('chicken')// 使用对象miu.eat()
这里会输出
chicken walkingeat Chicken food
因为在eat()方法内
先调用了静态方法 Chicken.walk()
再输出 eat Chicken food
继承 - extends
关键字 extends
语法:class 父类 extends 子类
构造函数可添加子类的新属性
子类和父类属性相同-子类构造函数可不写
super(type)不带{}记住!!!
// 父类 - Animalclass Animal{constructor(type){this.type = type}eat (){console.log('eat food')}}// 子类 - Dogclass Dog extends Animal{constructor(type){super(type)// 子类继承原本的构造函数// 如果有不同的地方这里可以继续添加属性this.age = 1// 这里给子类添加age属性}}// 创建实例对象let dog = new Dog('dog')// 查看子类的新属性console.log(dog.age)
