函数之美1:this之弊

25 阅读1分钟
class Dog {
    constructor(name, age, type) {
        this.name = name;
        this.age = age;
        this.type = type;
    }

    async eat() {
        console.log(`${this.name} is eating.`);
        await new Promise(resolve => setTimeout(resolve, 2000));
        console.log(`${this.name} has finished eating.`);
        return this;
    }
}


const dudu = new Dog("嘟嘟", 3, "泰迪");
// 了解语法的都知道dog就是当前的dudu
// 但是如果不太了解语法的可能没有一眼看出dog就是dudu
// 代码第一要素直观
dudu.eat().then((dog) => {
    console.log(dog)
    dog.eat()
})

class Cat {
    constructor(name, age, type) {
        this.name = name;
        this.age = age;
        this.type = type;
    }

    async eat() {
        console.log(`${this.name} is eating.`);
        await new Promise(resolve => setTimeout(resolve, 2000));
        console.log(`${this.name} has finished eating.`);
    }
}
const rourou = new Cat('肉肉', 8, '加菲')
// 改变写法
rourou.eat().then(() => {
    console.log(rourou)
    rourou.eat()
})

// 这里有的同学可能说链式更方便 这是仁者见仁 智者见智的问题 我认为第一要素是直观