JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 55
  • Score
    100M100P100Q58308F
  • License BSD-3-Clause

Creates an object with a specific constructor function and prototype object

Package Exports

  • isotropic-create
  • isotropic-create/lib/create.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (isotropic-create) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

isotropic-create

npm version License

A utility that creates an object with a specific constructor function and prototype object.

Why Use This?

  • Safer Object Creation: Avoids issues that can occur when forgetting the new keyword
  • Familiar Semantics: Retains the constructor property you'd expect from new
  • Explicit Prototypes: Clearly specifies the prototype object for better code readability
  • Controlled Inheritance: Provides a cleaner approach to prototypal inheritance

Really though, for most use cases it's better not to directly use isotropic-create. Use isotropic-make instead!

Installation

npm install isotropic-create

Usage

import _create from 'isotropic-create';

// Define a constructor function
const _Person = (name, age) => {
    const instance = _create(_Person, _Person.prototype);

    instance.name = name;
    instance.age = age;

    return instance;
};

// Define methods on the prototype
_Person.prototype.greet = function () {
    return `Hello, my name is ${this.name}`;
};

{
    // Create an instance without using 'new'
    const john = _Person('John', 30);

    console.log(john.greet()); // "Hello, my name is John"
    console.log(john.constructor === _Person); // true
    console.log(Object.getPrototypeOf(john) === _Person.prototype); // true
}

How It Works

isotropic-create uses Object.create() to create a new object with the specified prototype and then adds the constructor property with the right settings. This approach:

  1. Avoids the issues that can occur when forgetting the new keyword
  2. Explicitly sets the prototype chain
  3. Adds the constructor property (non-enumerable) pointing to the constructor function

It's important to note that isotropic-create creates the instance object but does not call the constructor function! A useful pattern is to use it within a constructor function and then return the instance.

API

create(constructorFunction, prototypeObject)

Returns a new object with prototypeObject as its prototype and a constructor property that points to constructorFunction.

Parameters

  • constructorFunction (Function): The constructor function to assign to the object
  • prototypeObject (Object): The prototype object to use

Returns

  • (Object): A new object with the specified prototype and constructor

Contributing

Please refer to CONTRIBUTING.md for contribution guidelines.

Issues

If you encounter any issues, please file them at https://github.com/ibi-group/isotropic-create/issues