Socket
Book a DemoInstallSign in
Socket

flatten-prototypes

Package Overview
Dependencies
Maintainers
3
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

flatten-prototypes

Flatten out an objects prototypes into a single flat object

latest
Source
npmnpm
Version
4.0.0
Version published
Weekly downloads
15
66.67%
Maintainers
3
Weekly downloads
 
Created
Source

flatten-prototypes

Flatten out an objects prototypes into a single flat object

Example

var flattenPrototypes = require("flatten-prototypes");

var foo = { hello: 'foo', deep: { one: true } }
var bar = { woop: 'leep' }
var baz = { world: 'baz', deep: { two: true } }

foo.__proto__ = bar
bar.__proto__ = baz

var obj = flattenPrototypes(foo)
obj.hello // foo
obj.woop // leep
obj.world // baz
obj.deep // { one: true, two: true }
Object.keys(obj); // ['hello', 'woop', 'world', 'deep']

Docs

flattenPrototypes(object) => object

flattenPrototypes takes an object with a non trivial prototype chain and will return you a plain object with no prototypes which has all the properties of the original object and it's prototypes.

This is like Object.getOwnPropertyNames except it get's all the property names not just it's "own" ones and then returns a new plain object with those properties where the values are either the value of the property or a deep merging of the values of the properties if multiple of the prototypes have the same key.

Basically if you were using prototypes to share data across multiple objects and you wanted to be able to get a flat plain object of the current state you can call flattenPrototypes

var Blueprint = {
    hands: 2,
    feet: 2,
    legs: 2,
    arms: 2
}

var Spider = {
    legs: 8,
    feet: 8,
    hands: 0,
    arms: 0
}
Spider.__proto__ = Blueprint

var Dog = {
    arms: 0,
    feet: 4,
    legs: 4,
    hands: 0
}
Dog.__proto__ = Blueprint

var Shepherd = {
    fluffy: true
}
Shepherd.__proto__ = Dog

var Pug = {
    curledTail: true
}
Pug.__proto__ = Dog

var myPug = {
    name: "Puggy pug pug"
}
MyPug.__proto__ = Pug

// to get the properties of `MyPug` we can flatten its prototypes
var props = flattenPrototypes(myPug)
// this now is a plain object with own properties which means
// we can serialize and print it
console.log(JSON.stringify(props))

Installation

npm install flatten-prototypes

Tests

npm test

Contributors

  • Raynos

MIT Licenced

FAQs

Package last updated on 30 Jul 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts