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
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
newkeyword - Familiar Semantics: Retains the
constructorproperty you'd expect fromnew - 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-createUsage
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:
- Avoids the issues that can occur when forgetting the
newkeyword - Explicitly sets the prototype chain
- 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 objectprototypeObject(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