使用原型继承与委托模式

时间:2019-11-21 11:22:18

标签: javascript

我有两个相同的代码示例。 但这对我来说很有趣,在这种情况下最好。我知道原型继承实际上是行为委托模式。但是您可以在我的第一个示例中看到,我在需要帮助器时为第二个示例创建了存储帮助器方法的原型,我创建了新的实例帮助器类并使用了该实例。使用完此实例后,收集垃圾。
这对我来说很有趣,哪个最好?
当我创建新的实例函数调用时间时,这是明显的性能问题吗?

class UserHelper {
    checkFileSize() {

    }

    fileUpload() {

    }

}

class User extends UserHelper {
    constructor(firstName, lastName) {
        super()
        this.firstName = firstName;
        this.lastName = lastName;
    }

    changeUserAvatar() {
        this.checkFileSize();
        this.fileUpload();
    }
}

const murad = new User();

VS

class UserHelper {

    checkFileSize() {

    }

    fileUpload() {

    }

}

class User {
    constructor(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    changeUserAvatar() {
        const helper = new UserHelper();
        helper.checkFileSize();
        helper.fileUpload();
    }
}

const murad = new User();

1 个答案:

答案 0 :(得分:0)

使用 helpers 的明显优点是,您可以在多个类和方法中多次重用它,而不会受到继承问题的限制。出于同样的原因,这将有助于使您的代码库保持DRY原则。