16_class

class

知识点

// 1. 使用 class 声明类
// 2. constructor 定义构造函数初始化
// 3. extends 继承父类
// 4. super 调用父级构造方法
// 5. static 定义静态方法和属性
// 6. 父类方法可以重写

1. ES5 方法构造函数

function Phone(brand, price) {
    this.brand = brand
    this.price = price
}
Phone.prototype.call = function() {
    console.log('我被用来打电话')
}

2. ES6 方法构造函数

class Phone {
    static nation = '中国'
    // 构造方法,名字不可修改
    constructor(brand, price) {
        this.brand = brand
        this.price = price
    }
    // 方法必须使用该语法,不能使用 ES5的对象完整形式(带冒号那种)
    call() {
        console.log('我可以联系远方的她——' + Phone.nation)
    }
}

3. ES6构造函数继承

class Phone {
    static name = '华为'
    constructor(type, size) {
        this.type = type
        this.size = size
    }
    call() {
        console.log('我能打电话')
    }
}
// 继承
class superPhone extends Phone {
    constructor(type, size, color, price) {
        super(type, size)
        this.color = color
        this.price = price
    }
    
    phone() {
        console.log('我可以拍照')
    }
    playGame() {
        console.log('我可以打游戏')
    }
    // 重写父类方法
    call() {
        console.log('我可以视频通话')
    }
}
let s1 = new superPhone('iPhone', '12', '蓝', '8999')

4. get 和 set

class Phone {
    get price() {
        console.log('获取了价格')
        return '价格'
    }
    // 注意 set 方法必须有一个参数
    set price(newVal) {
        console.log('修改了价格')
    }
}
let s = new Phone()

你可能感兴趣的:(16_class)