protochain

    1.0.5 • Public • Published

    protochain

    Build Status

    Get the prototype chain of an object or primitive as an Array.

    Why

    I often write this function, figure I should extract it. There are probably other utilities out there that do this but I couldn't find them so they're either poorly named/described or the search algorithm is not being very helpful or I simply searched for the wrong things.

    Installation

    > npm install protochain
    

    Usage

    ES5

    var protochain = require('protochain')
     
    protochain({})
    // => [Object.prototype]
     
    protochain(Object.create(null))
    // => []
     
    protochain(new Error('message'))
    // => [Error.prototype, Object.prototype]
     
    protochain(new TypeError('message'))
    // => [TypeError.prototype, Error.prototype, Object.prototype]
     
    // Inheritance
     
    function Person() {
     
    }
     
    function FancyPerson() {
      Person.call(this)
    }
     
    FancyPerson.prototype = Object.create(Person.prototype)
     
    protochain(new Person())
    // => [Person.prototype, Object.prototype]
     
    protochain(new FancyPerson())
    // => [FancyPerson.prototype, Person.prototype, Object.prototype]
     
    // Primitives are OK
     
    protochain(123)
    // => [Number.prototype, Object.prototype]
     
    protochain('abc')
    // => [String.prototype, Object.prototype]
     
    protochain(/abc/)
    // => [RegExp.prototype, Object.prototype]
     
    protochain(true)
    // => [Boolean.prototype, Object.prototype]
     
    protochain(false)
    // => [Boolean.prototype, Object.prototype]
     
    // Null & Undefined === Empty List
     
    protochain(null)
    // => []
     
    protochain(undefined)
    // => []
     
    protochain()
    // => []

    ES6

     
    import protochain from 'protochain'
     
    class Person {}
    class FancyPerson extends Person {}
     
    protochain(new Person())
    // => [Person.prototype, Object.prototype]
     
    protochain(new FancyPerson())
    // => [FancyPerson.prototype, Person.prototype, Object.prototype])
     

    License

    MIT

    Install

    npm i protochain

    DownloadsWeekly Downloads

    66,951

    Version

    1.0.5

    License

    ISC

    Last publish

    Collaborators

    • timoxley