Skip to content
/ is-pojo Public

check if something is a POJO (Plain Old Javascript Object)

Notifications You must be signed in to change notification settings

bttmly/is-pojo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

is-pojo Build Status NPM version

Installation

npm install is-pojo

Usage

var isPojo = require("is-pojo");
isPojo({}) // true

// anything besides an absolutely plain object will return false.

// here are examples from the tests:

function Foo () {}
function Bar () {}
Bar.prototype.constructor = Object;

isPojo(function () {}) // false
isPojo([]) // false
isPojo(new Date()) // false
isPojo(true); // false
isPojo("abc"); // false
isPojo(123); // false
isPojo(new RegExp()); // false
isPojo(null); // false
isPojo(undefined); // false
isPojo(Object.create({})); // false
isPojo(new Foo()); // false
isPojo(new Bar()); // false
isPojo({constructor: Foo}); // true

Why?

The other module on npm that I found to do this checks an object's constructor property against Object. This approach is error-prone since there's nothing special about the constructor property; you can set it willy-nilly (see example above).

In contrast, an object's actual prototype (obtained with Object.getPrototypeOf) is the real and only definition of an object's nature -- even in the possible case that its prototype has been changed after creation (either though the spec compliant Object.setPrototypeOf or by changing the commonly implemented __proto__ property).

About

check if something is a POJO (Plain Old Javascript Object)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published