is-pojo
v1.0.2
Published
check if something is a POJO (plain old javascript object)
Downloads
3,276
Readme
is-pojo
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 prototype can be set just once, at instantiation time. As such it's safe to check an object's prototype (obtained with Object.getPrototypeOf
) against Object.prototype
.