Skip to content
Immutable javascript objects.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
test
.gitignore
.jshintrc
.npmignore
.yarnclean
README.md
gulpfile.js
index.js
package.json
yarn.lock

README.md

NPM

node-immutable-object

imobject allows you to create deep immutable JavaScript objects. Once the properties are set additional properties can't be added and the initial properties cannot be modified.

##Installation To use imobject, cd into your project directory and install imobject with npm or yarn.

npm

$ cd /to/project/directory
$ npm install imobject --save

yarn

$ cd /to/project/directory
$ yarn add imobject

##Usage To create an imobject, simply require the npm package and cast your standard JavaScript objects into imobjects.

const IMObject = require('imobject');

var immutable = new IMObject({
	foo: 'bar',
	nested: {
		foo: 'baz'
	}
});

// To access properties simply use the dot operator
console.log(immutable.foo);
// -> bar

console.log(immutable.nested.foo);
// -> baz

// If you attempt to modify a property an exception will be thrown
immutable.nested.foo = 'newvalue'
// -> ERROR!

// If you attempt to add a new property an exception will be thrown
immutable.newprop = 'newvalue'
// -> ERROR!

###Instance Methods

get

get works just like the dot operator with the added benefit of providing a default value if the path requested is not set.

const IMObject = require('imobject');

var immutable = new IMObject({
	foo: 'bar',
	nested: {
		foo: 'baz'
	}
});

console.log(immutable.get('foo'));
// -> bar

console.log(immutable.get('nested.foo',  'defaultvalue'));
// -> baz

console.log(immutable.get('nested.notset', 'defaultvalue'));
// -> defaultvalue

has

has returns a boolean value indicating whether or not a given path is set.

const IMObject = require('imobject');

var immutable = new IMObject({
	foo: 'bar',
	nested: {
		foo: 'baz'
	}
});

console.log(immutable.has('foo'));
// -> true

console.log(immutable.has('nested.foo'));
// -> true

console.log(immutable.hast('nested.notset'));
// -> false

##Known Issues Custom objects are not immutably cloned because it is not safe to do so. Immutability only works on for the following types: String, Boolean, Object, Number, Array, Date, RegExp.

You can’t perform that action at this time.