javascript - 我正在应用什么技术来减少代码?
问题描述
当我在一个对象中调用一个对象来扩展对象时,我应用了什么样的编程技术?
在我的工作中,我们有一个规则,即任何 JS 文件都不能超过 50 行。因此,当我们有一个非常大的对象时,我们将新子对象上的代码分开,但作为单个对象工作:
function ObjetoA(parent){
parent.showMessage() = function () {
console.log('HOLA MUNDO');
}
}
function Objeto(){
new ObjectoA(this); //this one
this.sayHiAgain() = function () {
console.log('HOLA MUNDO OTRA VEZ');
}
}
let Prueba = new Objecto();
Prueba.showMessage();// it works
解决方案
让我们看看发生了什么:
- 当您调用
Objeto()
时,代码new ObjetoAA(this)
将运行。 - 现在,
ObjetoAA(parent)
运行,它将属性设置showMessage
为parent
. 该属性是一个函数。所以现在Objecto
有一个函数属性showMessage
。
我认为在您实现它的方式中这种模式没有任何特定的名称。它只是......使用对象。我会说这是一种扩展/修改/拆分/组合类的创造性方法。这有点模拟mixin。
但这不应该是必要的:看看你为了满足任意行数限制而必须经历的体操。它提高了你的生产力吗?它是否提高了代码的可读性和可维护性?没有。
一些限制可能是有道理的:没有人想在单个文件中扫描 30,000 行 JavaScript(至少,不是未缩小的版本);但 50 是一个非常非常小的限制。如果可以的话,我建议你推迟这项政策。
推荐阅读
- html - 如何在输入右侧使用标签而不是“选择文件”->“选择图像”设置选择个人资料图像输入
- c# - 如何在c#中更改配置文件
- reactjs - 观察者不渲染的自定义钩子
- python - 如何比较json中的数据类型
- android - Mockito 没有从我的模拟自定义类中模拟方法 [Kotlin - Android]
- javascript - 显示从 Nodejs ExpressJS 路由到 EJS 视图
- ef-core-3.0 - IsConcurrencyToken(true) 实际上并不检查并发令牌
- c# - Wwise:播放特定音频对象(用于对话)
- asp.net-mvc - 如何从 MVC 控制器认证到单独的 Web Api 项目
- angular - 我收到错误 TS2345:X 类型的参数不可分配给 Y 类型的参数