Related
Mastering CSS Theming with Variables
This blog covers how we can achieve theming with the help of css variables
Popular topics
02 min reading in—Javascript
This blog explains prototypes in javascript with help of examples.
In JavaScript, understanding the concept of prototype and prototypal inheritance is crucial for writing efficient and maintainable code. While JavaScript is often described as a prototype-based language, its inheritance model can be puzzling for developers coming from class-based languages like Java or C++. In this blog post, we'll explore prototype and prototypal inheritance in depth, with numerous examples to illustrate these concepts.
In JavaScript, each object has a prototype. A prototype is simply a reference to another object. When you access a property or method on an object, JavaScript first checks if that property or method exists directly on the object. If it doesn't, JavaScript looks up the prototype chain until it finds the property or method or reaches the end of the chain.
Prototypal inheritance is the mechanism by which objects in JavaScript inherit properties and methods from other objects. Unlike class-based inheritance found in languages like Java or C++, where classes act as blueprints for creating objects, JavaScript uses prototypes for inheritance.
Let's dive into some examples to better understand how prototype and prototypal inheritance work in JavaScript.
1// Creating an object with a prototype 2const personPrototype = { 3 greet() { 4 return `Hello, ${this.name}!`; 5 } 6}; 7 8const john = Object.create(personPrototype); 9john.name = "John"; 10console.log(john.greet()); // Output: Hello, John! 11
In this example, personPrototype
is an object with a greet
method. We then create a new object john
using Object.create()
, passing personPrototype
as its prototype. john
inherits the greet
method from personPrototype
.
1// Constructor function 2function Person(name) { 3 this.name = name; 4} 5 6Person.prototype.greet = function() { 7 return `Hello, ${this.name}!`; 8}; 9 10const alice = new Person("Alice"); 11console.log(alice.greet()); // Output: Hello, Alice! 12
Here, we define a constructor function Person
that takes a name
parameter and assigns it to the object's name
property. We then add a greet
method to the Person.prototype
. When we create a new Person
object using the new
keyword, it inherits the greet
method from Person.prototype
.
1// ES6 Class 2class Animal { 3 constructor(name) { 4 this.name = name; 5 } 6 speak() { 7 return `${this.name} makes a sound.`; 8 } 9} 10 11class Dog extends Animal { 12 speak() { 13 return `${this.name} barks.`; 14 } 15} 16 17const dog = new Dog("Buddy"); 18console.log(dog.speak()); // Output: Buddy barks. 19
While ES6 introduced class syntax to JavaScript, under the hood, it still uses prototype-based inheritance. In this example, Dog
extends Animal
, inheriting its properties and methods through the prototype chain.
Understanding prototype and prototypal inheritance is essential for writing clean, efficient JavaScript code. By leveraging prototypes, you can create reusable code and build complex object relationships. Experiment with the examples provided and explore further to deepen your understanding of these concepts. Happy coding!
Related
This blog covers how we can achieve theming with the help of css variables
Related
This blog explains the importance of different meta tags and their correlation with SEO
Related
In JavaScript, this is a special keyword that refers to the context in which a function is executed. The value of this depends on how a function...