What is a Plain Old JavaScript Object (POJO)?
In this post, we will give you information about What is a Plain Old JavaScript Object (POJO)? . Here we will give you detail about What is a Plain Old JavaScript Object (POJO)? And how to use it also give you a demo for it if it is necessary.
There’s a lot of debate as to what a POJO is in JavaScript:
StackOverflow thinks it is any class that contains user data, but the
top npm module on Google defines a POJO as
any object whose prototype is Object.prototype
.
The intuition behind POJOs is that a POJO is an object that only contains data,
as opposed to methods or internal state. Most JavaScript codebases consider objects
created using curly braces {}
to be POJOs. However, more strict codebases
sometimes create POJOs
by calling Object.create(null)
to avoid inheriting from the built-in Object
class.
// If you create an object 'obj' with '{}', 'obj' is an instance of
// the 'Object' class, and so it has some built-in properties.
let obj = {};
obj.hasOwnProperty; // [Function]
obj.constructor === Object; // true
// On the other hand, 'Object.create(null)' creates an object that
// doesn't inherit from **any** class.
obj = Object.create(null);
typeof obj; // 'object'
obj.hasOwnProperty; // undefined
obj.constructor; // undefined
obj.prop = 42;
obj.prop; // 42
POJOs vs Maps
JavaScript Maps are an alternative to POJOs for storing data because they do not have any inherited keys from the Object
class. However,
objects are generally easier to work with than maps, because not all JavaScript
functions, frameworks, and libraries support maps.
For example, the JSON.stringify()
function doesn’t serialize maps by default.
const map = new Map([['answer', 42]]);
JSON.stringify(map); // '{}'
Checking if an Object is a POJO
Checking if an object is a POJO can be somewhat tricky and depends on whether
you consider objects created using Object.create(null)
to be POJOs. The safest
way is using the Object.getPrototypeOf()
function and
comparing the object’s prototype.
function isPOJO(arg) {
if (arg == null || typeof arg !== 'object') {
return false;
}
const proto = Object.getPrototypeOf(arg);
if (proto == null) {
return true; // 'Object.create(null)'
}
return proto === Object.prototype;
}
isPOJO({}); // true
isPOJO(Object.create(null)); // true
isPOJO(null); // false
isPOJO(new Number(42)); // false
For example, below is Mongoose’s internal isPOJO()
function
exports.isPOJO = function isPOJO(arg) {
if (arg == null || typeof arg !== 'object') {
return false;
}
const proto = Object.getPrototypeOf(arg);
// Prototype may be null if you used 'Object.create(null)'
// Checking 'proto''s constructor is safe because 'getPrototypeOf()'
// explicitly crosses the boundary from object data to object metadata
return !proto || proto.constructor.name === 'Object';
};
Mongoose checks for the constructor.name
property instead of checking if proto.constructor === Object
to support objects generated using Node.js vm
module.
const obj = require('vm').runInNewContext('({})');
// 'obj' inherits from a different JavaScript context's 'Object' class.
obj.constructor === Object; // false
obj.constructor.name; // 'Object' for Plain Old JavaScript Object (POJO)
JavaScript Fundamentals for Plain Old JavaScript Object (POJO)?
JavaScript is a programming language that is used to create interactive web pages. It is a client-side scripting language, which means that it runs on the user’s browser. JavaScript can be used to add animation, interactivity, and functionality to web pages.
Here are some of the fundamentals of JavaScript:
- Variables: Variables are used to store data. They are declared using the
var
keyword. - Data types: JavaScript has a variety of data types, including strings, numbers, booleans, objects, and arrays.
- Operators: Operators are used to perform operations on data.
- Control flow statements: Control flow statements allow you to control the order in which your code is executed.
- Functions: Functions are blocks of code that can be reused.
- Objects: Objects are used to store data in key-value pairs.
- Arrays: Arrays are used to store data in a sequential order.
- Events and event handlers: Events are notifications that are sent by the browser when something happens, such as when the user clicks on an element or moves the mouse over an element. Event handlers are functions that are called in response to an event.
- DOM manipulation: The Document Object Model (DOM) is a tree-like structure that represents the elements of a web page. JavaScript can be used to manipulate the DOM to change the appearance or behavior of a web page.
These are just some of the fundamentals of JavaScript. There are many other concepts that you can learn as you continue to develop your skills.
Here are some resources that you can use to learn more about JavaScript:
- Mozilla Developer Network (MDN): The MDN is a great resource for learning about JavaScript. It has a comprehensive reference guide, tutorials, and articles on a wide range of topics.
- W3Schools: W3Schools is another great resource for learning about JavaScript. It has interactive tutorials and quizzes that can help you learn the basics of the language.
- JavaScript.info: JavaScript.info is a website that provides in-depth tutorials on JavaScript. It also has a forum where you can ask questions and get help from other JavaScript developers.
I hope this helps!
Here are some additional tips for learning JavaScript:
- Start with the basics: Before you start trying to build complex applications, it’s important to learn the basics of JavaScript. This includes things like variables, data types, operators, and control flow statements.
- Practice regularly: The best way to learn JavaScript is to practice regularly. Try to find some time each day to work on JavaScript projects.
- Get help from others: If you get stuck, don’t be afraid to ask for help from others. There are many online forums and communities where you can get help from other JavaScript developers.
With a little practice, you’ll be able to learn JavaScript and start building amazing web applications.
Hope this code and post will helped you for implement What is a Plain Old JavaScript Object (POJO)? – onlinecode. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so, For more interesting post and code Keep reading our blogs