面向对象

面向对象js定义对象,Object Oriented,软件开发方法,一种编程范式。

JavaScript类(ES6)

面向对象,关键字:class、constructor、extends、supper、static;

属性:公有属性、私有属性、静态属性;

方法(函数):构造函数(有且只能有1个)、set get方法、普通方法、静态方法。

案例代码

class Person {
    name = ''
    // 私有属性
    _age = 0
    // 构造方法
    constructor(name, age = 21) {
        this.name = name
        this._age = age;
    }
    // set get
    set name(name) {
        this.name = name
    }
    get name() {
        return this.name
    }
    set age(age) {
        this._age = age
    }
    get age() {
        return this._age
    }
    info() {
        console.log(this.name + " | " + this._age)
    }
}
let p1 = new Person('宋江')
p1.info()
let p2 = new Person('卢俊义', 34)
p2.info()
let p3 = new Person()
p3.name = '吴用'
p3.age = 35
p3.info()
console.log(Person.prototype) //{}
console.log(p1.__proto__) //{}

面向对象,继承

继承(关键字extends):

只支持单继承,不支持多继承,可多层继承。

类与类之间,存在相同(共性)的内容js定义对象,并满足子类时父类中的一种,可以考虑使用继承,用来优化代码。

案例代码

class Person {
    name = ''
    // 私有属性
    _age = 0
    // 构造方法
    constructor(name, age = 21) {
        this.name = name
        this._age = age;
    }
    // set get
    set name(name) {
        this.name = name
    }
    get name() {
        return this.name
    }
    set age(age) {
        this._age = age
    }
    get age() {
        return this._age
    }
    info() {
        console.log(this.name + " | " + this._age)
    }
}
class Student extends Person {
    _classes = ''
    constructor(name, age, school, classes = '') {
        super(name, age);
        this.school = school;
        this._classes = classes;
    }
    info() {
        console.log(super.name + " | " + super.age + " | " + this.school + " | " + this._classes)
    }
}
let s1 = new Student("林冲", 24, "私塾", "小学")
s1.info()
console.log(Student.prototype) // Person {}
console.log(s1.__proto__) // Person {}

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: wxii2p22