JavaScript Objects - Object Composition


Object composition is a powerful concept in JavaScript that allows you to build complex objects by combining or composing simpler objects. In this guide, we'll explore the concept of object composition and provide sample code to illustrate its use.


Creating Simple Objects


Let's start by creating a few simple objects that represent various parts of a car:


const engine = {
fuelType: 'Gasoline',
power: '150 HP',
};
const wheels = {
count: 4,
material: 'Alloy',
};
const body = {
color: 'Red',
type: 'Sedan',
};

Composing a Car Object


Now, let's compose a car object by combining the above objects:


const car = {
engine,
wheels,
body,
start() {
console.log('The car is starting.');
},
drive() {
console.log('The car is moving.');
},
};

In this example, we've created a `car` object by combining the `engine`, `wheels`, and `body` objects, along with additional methods like `start` and `drive` that are specific to the car.


Using Object Composition


Object composition allows you to build more complex objects by combining various objects and their properties. You can access and manipulate the properties of the composed object as follows:


console.log('Car Engine Power: ' + car.engine.power);
console.log('Car Body Color: ' + car.body.color);
car.start(); // Outputs: 'The car is starting.'
car.drive(); // Outputs: 'The car is moving.'

You can access properties and methods of the `car` object just like any other JavaScript object.


Extending and Modifying Composed Objects


You can also extend and modify composed objects by adding or changing properties and methods as needed:


car.wheels.tireBrand = 'Michelin';
car.engine.horsepower = '200 HP';
car.stop = function() {
console.log('The car is stopping.');
};

By extending the `car` object, you can add new properties like `tireBrand` and update the engine's `horsepower` property. Additionally, you can define a new `stop` method for the car.


Conclusion


Object composition is a versatile technique that allows you to create complex and hierarchical objects by combining simpler objects, each representing a specific aspect of your application. This helps in creating modular and maintainable code.


Experiment with object composition in your JavaScript projects to create more organized and flexible code structures.