class类定义
// 1 class类的定义
class Cat{
constructor(x) { // 相当于构造函数
this.name = x // 实例对象的自身属性
this.pp = function() {} // 实例对象的自身的方法
}
xx = '呵呵' // 实例对象的自身属性 -- 所以一般属性写在构造器里面
hh() {} // 实例对象原型上的方法
kk() { console.log('kk方法 --- 欢喜')}
static a1() {console.log(66)} // ES6中给类添加 1个静态方法 -- static关键字
}
// 2 创建实例对象
let cat = new Cat('哈哈')
// 3 访问实例对象
console.log(cat.name)
console.log(cat.xx)
cat.kk()
console.log(cat) // constructor 指向--> class Cat
console.log(cat.__proto__) // 指向--> Cat.prototype
Cat.a1() // 静态方法只能通过 Cat类来访问 -- 实例对象是访问不到的 -- 整个原型链上都没有
class类继承
继承上面定义的类
// class类的定义+继承
class Dog extends Cat{ // Dog 继承了 Cat 这个类 -- Dog表示子类, Cat 为父类
constructor(f, x) { // 此处应在子类参数后面 -- 加上父类的参数
super(x) // 子类中使用 this之前, 一定要先执行这个方法 (否则报错) -- 参数为父类的参数
this.food = f
// console.log(this.xx) //呵呵 -- 知道就行
// this.kk() // kk方法 --- 欢喜 -- 知道就行
}
}
// 2 创建实例对象
let dog = new Dog('骨头', '狗')
// 3 访问子类的属性
console.log(dog.food) // 可以正常定义自己的类
dog.kk() // 可以访问父类的方法
console.log(dog.name)