JavaScript immutable object
Switch branches/tags
Nothing to show
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.
example
.gitignore
ImmutableObject.js
LICENSE
README.md
createClass.js
factory.js
gulpfile.js
index.js
lens.js
package.json
tests.js

README.md

Immutable Object

Use in Node.js:

npm install immutable-object

Or, in a web app. You'll need ES5-shim for this to work in older web browsers.

Examples

var immutable = require("immutable-object");

var first = immutable({ foo: 1, bar: 2 });
var second = first.set({ foo: 2, buz: 3 });

You can use immutable.createClass to define an immutable object constructor that adds methods to the prototype.

var Task = immutable.createClass({
  // The constructor will call the `init` method when constructing an instance.
  // It *must* return an object.
  init: function(text) {
    return this.set({ text: text, isDone: false });
  },
  // Mutation methods return a new object, the original is unchanged.
  setText: function(text) {
    // Use the `set` method to create the new object.
    return this.set({ text: text });
  },
  done: function() {
    return this.set({ isDone: true });
  },

  // Properties of the object are accessible as normal.
  toString: function() {
    return this.text + (this.isDone ? " - done" : "");
  }
});

var task = new Task("Buy ice cream");
console.log(task.toString());

// Any change results in a new object.
// So be sure to assign the result to use it.
task = task.setText("Eat ice cream");
console.log(task.toString());

task = task.done();
console.log(task.toString());