在对象内部调用子对象扩展自身,我采用的是哪种编程技术?
你用到的是混入(Mixin)模式
你这里采用的是**构造函数式混入(Constructor Mixin)**的编程技术,这是JS里实现代码复用、拆分大型对象的常用手段之一。
核心原理
Mixin模式的核心就是:把一个(或多个)对象的属性、方法“注入”到另一个对象中,不需要建立类的继承关系,就能让目标对象拥有这些额外的功能。在你的代码里,ObjetoA就是一个Mixin函数——它接收父对象实例parent作为参数,直接给这个实例添加新的方法,之后在主构造函数Objeto里调用这个Mixin,把当前实例this传递进去,就能让Objeto的实例拥有ObjetoA定义的方法。
修正你的代码语法问题
先提个小细节:你的代码里有语法错误,赋值方法的时候不能加括号,正确写法应该是这样:
function ObjetoA(parent) { // 去掉括号,直接给属性赋值函数 parent.showMessage = function () { console.log('HOLA MUNDO'); } } function Objeto(){ new ObjetoA(this); // 同样修正这里的括号 this.sayHiAgain = function () { console.log('HOLA MUNDO OTRA VEZ'); } } let Prueba = new Objeto(); Prueba.showMessage(); // 现在可以正常运行
为什么适合你的场景
这种模式刚好适配你提到的“每个JS文件不超过50行”的规定:你可以把大型对象的不同功能模块拆分成多个独立的Mixin函数(甚至放到不同的文件里),然后在主构造函数里依次调用这些Mixin,把所有方法都注入到同一个实例中。最终你得到的还是一个统一的对象,但代码却被拆分得更清晰、更符合团队规范。
内容的提问来源于stack exchange,提问作者alexgomez88
相关产品推荐
相关产品推荐

