Introduction

Let's explore a new and powerful feature of JavaScript: metaprogramming.

Metaprogramming is a way to extend a program at runtime; it’s the ability to write code that writes code.

Although it’s one of the newest and most complex features of JavaScript, it is also one of its most powerful features. You may use metaprogramming to dynamically extend code where you feel fit.

Extending classes

JavaScript classes are open, meaning you can extend them without using inheritance. Therefore, you’re not limited to using the facilities provided by the author of the class. You can add your own convenience methods and properties to classes to make it easier and more fluent to use or to meet your own style or preferences. Furthermore, can add these behaviors dynamically at runtime, anytime.

Inheritance vs metaprogramming

Inheritance forces you to create a new class to extend the behavior of a class. Metaprogramming permits you to extend a class in place. That is, when you extend a class using inheritance, the added features are available only in the instance of the derived class and not in the instances of the base class. However, when you extend a class with metaprogramming you enhance an existing class without creating any additional classes.

Uses

Several JavaScript libraries and frameworks, like React and Angular, make extensive use of metaprogramming to pull metadata from code, to take special actions, or implement special behaviors.

Knowing metaprogramming greatly demystifies the code you write to use these libraries or frameworks. Furthermore, it helps you approach testing code with greater confidence.

Get hands-on with 1200+ tech skills courses.