Learn Java and Programming through articles, code examples, and tutorials for developers of all levels.
How to use Context and useReducer for state management in React app? Example Tutorial
What is "render props" in React.js? Example Tutorial
Top 20 Hibernate Interview Questions with Answers for Java Programmers
How to Parse JSON in Java Object using Jackson - Example Tutorial
How to use useReducer in React.js and JavaScript? Example Tutorial
Introduction
Before the React hooks were introduced, it was not possible to use state in functional components. The React hooks transformed stateless functional components into stateful components in which state and lifecycle methods like functionality could be used.
The useState hook is the primary hook for declaring the state in a functional component. Using it, a state variable can be declared and initialized along with a function to manipulate it. But sometimes state gets complex and the useState hook is not efficient to handle it.
So React provides another hook for complex state management in functional components. This hook is called useReducer. In this article, we will discuss what useReducer hook is and how to use it.
7 Examples of HttpURLConnection in Java - Sending GET and POST Request [Tutorial]
3 Ways to change Embedded Tomcat Server Port in Spring Boot Application - Example
Difference between @SpringBootApplication vs @EnableAutoConfiguration annotations in Spring Boot? Example
Decorator Design Pattern Example in Java [Tutorial]
Difference between notify and notifyAll in Java? [Answered]
How to create a dynamic list in React? Example Tutorial
1. Introduction
Working with lists is common in React web development. Creating a static list is very easy but making it dynamic can be tough. Dynamic lists can generally be manipulated in one way or another. For example, a new item can be added to a list by entering a value in an input field or an item can be removed when it is clicked.
In this tutorial, we will learn how to create a dynamic list in which a new item can be added through an input field. Moreover, we will learn how to delete an item when clicked.
How to Solve Producer Consumer Problem in Java using BlockingQueue [Example]
Difference between CountDownLatch vs CyclicBarrier in Java Multithreading
Both CyclicBarrier and CountDownLatch are used to implement a scenario where one Thread waits for one or more Thread to complete their job before starting processing but there is one difference between CountDownLatch and CyclicBarrier in Java which separates them apart and that is, you can not reuse the same CountDownLatch instance once count reaches to zero and latch is open, on the other hand, CyclicBarrier can be reused by resetting Barrier, Once the barrier is broken.
Java 8 - Map and Reduce Example Tutorial
Top 5 Free & Paid Spring Certification Courses and Practice Tests
What is objects in JavaScript? Example Tutorial
JavaScript is a dynamically typed programming language. In JavaScript, it is not required to define the data type of a variable but that does not mean JavaScript does not have data types. Data types in JavaScript are divided into two categories - primitive and non-primitive.
Primitive data types such as numbers and strings can hold only a single value. But non-primitive types can hold more than one value. Objects in JavaScript are non-primitive.
If you have ever done programming, you may be familiar with the concept of objects because objects are one of the most important parts of programming. The reason is simple. Objects can hold multiple values. In this article, we will discuss objects in JavaScript.
5 Best books to Learn JDBC for Java Programmers
What are prototypes in JavaScript? Example Tutorial
Introduction
If you have used JavaScript, then you are definitely familiar with objects because objects are one of the commonly used data types not only in JavaScript but also in the entire programming community. An object in JavaScript looks like the following.
{
name: “Tom”,
age: 28,
city: “New York”
}
So basically, an object stores data in key-value pairs. We can create an object like we did above, and then assign it to a variable. This is one of creating objects in JavaScript. Another way is by using the constructor function.
Every object created in JavaScript has a default property named prototype. The prototype property is often a consulting concept in JavaScript. In this article, we will discuss what the prototype property is in JavaScript and how to use it.
Prototype
Observe the following code.
function Employee(name, age, city) {
this.name = name;
this.age = age;
this.city = city;
}
“Employee” is a constructor function. Let’s see what is the value of the “Employee. prototype”.
The prototype has several methods and properties. Observe the following image.
So, basically, the “Employee.prototype.constructor” is referring to “Employee” only. If we console “Employee.prototype”, then it will return only an empty object. This happens because as of now, we haven't added anything in the prototype of the “Employee” constructor.
Adding properties
The prototype can be used to add new properties to a defined constructor function.
Let’s create an object first.
function Employee(name, age, city) {
this.name = name;
this.age = age;
this.city = city;
}
const Emp1 = new Employee("Tom", 28, "New York");
The “Emp1” has three properties as of now - name, age, and city.
Now, suppose, we want to add a new property named gender to the “Employee”. We can do this using the prototype.
Employee.prototype.gender = "male";
Now, let’s see if there is any change in “Employee”.
No, because we have added “gender” to the prototype.
Now observe the “Emp1” object we created earlier.
The property added using the prototype is already available in the “Emp1” object.
Let’s create another object.
function Employee(name, age, city) {
this.name = name;
this.age = age;
this.city = city;
}
const Emp1 = new Employee("Tom", 28, "New York");
Employee.prototype.gender = "male";
const Emp2 = new Employee("Lisa", 21, "Chicago”);
The problem here is that the value of “gender” is “Emp2” is also “male”. So to change, we can simply assign a new value to it.
This way of adding new properties to a constructor function using the prototype and then inheriting them in the objects is known as prototype inheritance.
One important point here to remember is that if we change the value of “gender”, then it will be changed for every new object but not for those which are declared before it.
function Employee(name, age, city) {
this.name = name;
this.age = age;
this.city = city;
}
Employee.prototype.gender = "male";
const Emp1 = new Employee("Tom", 28, "New York");
const Emp2 = new Employee("Jack", 25, "Detroit");
Employee.prototype = {
gender: "female",
};
const Emp3 = new Employee("Lisa", 21, "Chicago");
Let’s check the value of “gender” for every object.
The value for “Emp3” is changed but not for “Emp1” and “Emp2” because they were declared before changing the value of “gender”.
Adding methods
Similarly, we can also use the prototype property to add new methods to a constructor function.
Observe the following code.
Employee.prototype.getDetails = function () {
console.log(
`Name of the employee: ${this.name}. \nAge: ${this.age} \nCity: ${this.city} \nGender: ${this.gender}`
);
};
Using the prototype property, the “getDetails” method is added to the “Employee”.
Let’s use the objects to invoke the “getDetails” method.
It will work similarly for the other object created using “Employee”.
Now observe the following code.
Employee.prototype.getDetails = () => {
console.log(
`Name of the employee: ${this.name} \nAge: ${this.age} \nCity: ${this.city} \nGender: ${this.gender}`
);
};
The “getDetails” method is an arrow function. So this means, this method does not “this” keyword, meaning, it will return undefined for name, age, city, and gender.
Wrapping it up
So the object prototype is a simple and powerful yet confusing concept in JavaScript. As objects are an important part of modern JavaScript, it is recommended to understand the concept of prototypes. In this article, we discussed what is prototype and how it is used to add properties and methods to a constructor function.