JS面向对象

╄→尐↘猪︶ㄣ 提交于 2020-01-26 08:57:31

ES6中的类和对象

类 抽象了对象的公共部分,它泛指某一大类

对象 特指某一个,通过实例化一个具体得对象

创建类

//1. 创建类 class 创建一个 明星类
var that;
class Star{
    //类的共有属性放到 constructor 里面
    constructor(uname){
        //constructor 里面this 指向的是 ldh
        that = this;
        this.uname = uname;
        this.btn = document.querySelector('button');
        this.btn.onclick = this.sing;
    }
    //类里面所有函数不需要写function
    //多个函数方法之间不需要添加逗号分隔
    sing(){
        //sing 里面的this 指向的是 btn
        console.log(this.uname); //undefined
        console.log(that.uname); //刘德华
    }
}
//2. 利用类创建对象 new
var ldh = new Star('刘德华');

类constructor构造函数

constructor() 方法是类的构造函数(默认方法),用于传递参数,返回实例对象,通过new命令生成对象实例时,自动调用该方法。如果没有显示定义,类内部会自动给我们创建一个constructor()

注意

  1. 在ES6中类没有变量提升,所以必须先定义类,才能通过类实例化对象
  2. 类里面的共有属性和方法一定要加this使用
  3. 类里面this 的指向问题
  4. constructor 里面的this指向实例对象,方法里面的this指向这个方法的调用者

类的继承

继承 extends

super关键字 用于访问和调用对象父类上的函数,可以调用父类的构造函数,也可以调用父类的普通函数。

class Father{
    constructor(x, y){
        this.x = x;
        this.y = y;
    }
    sum(){
        console.log(this.x + this.y);
    }
}
class Son extends Father{
    constructor(x, y){
        //利用super 调用父类的构造函数
        //super 必须在子类this 之前掉用
        super(x, y);
        this.x = x;
        this.y = y;
    }
    subtract(){
        console.log(this.x - this.y);
    }
}
var son = new Son(5, 3);
son.sum();
son.subtract();

继承中的属性或方法查找原则:就近原则

面向对象的案例

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!