Hace años utilicé esta técnica porque no sabía cómo hacerlo "bien" con prototipo. Es una técnica que llamo árbol de Navidad OOD. Haces una función que es como un constructor que crea un nuevo objeto, le agrega nuevas propiedades, como un árbol de Navidad, y le devuelve la referencia. Aquí hay un ejemplo:
function RigidBody() { const newRB = document.createElement('canvas'); newRB.dataMember = 5; newRB.memberFunction = function() { // do important rigid body stuff } return newRB; }Luego puede usar esta función como una especie de objeto base para crear otros objetos derivados.
function Ship(locX, locY) { const newShip = new RigidBody(); newShip.otherDataMember = 34; newShip.otherMemberFunction = function() { // some other important ship specific stuff to do } return newShip; }Puede ver que esta cosa simple que hice puede hacer N cantidad de objetos con una jerarquía completa de "clase" de objetos. Entonces puedes hacer un objeto del objeto derivado.
const myShip = new Ship(100, 200);Uso class ahora y no planeo usar esto en el futuro, pero tengo curiosidad por saber si otros han usado esta técnica y si tiene un nombre.
Todavía se llama OOP, ya que estás trabajando con objetos. Redefinir las funciones miembro dentro del constructor (cuando no es necesario para this enlace ) en lugar de ponerlas en el prototipo se considera una mala práctica , pero no cambia la funcionalidad ni el modelado.
Su técnica para crear objetos derivados se conoce como herencia parasitaria , un término acuñado por Douglas Crockford afaict.