
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
flatten-prototypes
Advanced tools
Flatten out an objects prototypes into a single flat object
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']
flattenPrototypes(object) => objectflattenPrototypes 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))
npm install flatten-prototypes
npm test
FAQs
Flatten out an objects prototypes into a single flat object
The npm package flatten-prototypes receives a total of 29 weekly downloads. As such, flatten-prototypes popularity was classified as not popular.
We found that flatten-prototypes demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

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.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.