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();
解决方案
使用助手的明显优势是您可以在多个类和方法中多次重用它,而不受继承问题的限制。出于同样的原因,这将有助于使您的代码库保持在DRY原则上。
推荐阅读
- c++ - 专门化一个模板化的覆盖函数/避免对象切片
- c - 从 C 应用程序检查 USB 设备 ID 和连接的端口
- c# - 如何在 c# 的 vlc 媒体播放器中更改默认图像显示时间不同 10 秒?
- python - Python 3.8 在空闲时因 c0000005 而崩溃
- c++ - Codechef问题ISHVALA(应许之地)
- material-ui - 材质 UI 的托盘未应用于 Button 组件?
- c# - 尝试在 Docker 容器中构建 C# Protobuf 项目时出现奇怪的“权限被拒绝”
- javascript - Fuse.js 在数组中搜索键中的点
- windows - Docker for windows:绑定安装 Azure SMB 驱动器失败
- java - 如何将 java.sql.Array 转换为 List
?