Neutered Paranoid Meerkat

    object-subscribe

    2.1.0 • Public • Published

    Unobtrusive JS object subscribe

    1.2 kb bytes minified, 580 bytes minified and gzipped

    npm install object-subscribe
    

    Create & subscribe to an object

    Create an object:

    var person = {
        name: 'Joey',
        age: 3
    };
    

    Subscribe to changes made to the object:

    Obj.subscribe(person, function(newPersonObject) {
        console.log(newPersonObject);
    }, true); // Pass true to execute callback now.
    

    Modify the object

    The callback passed to Obj.subscribe is called every time one of the following is called:

    • Obj.set
    • Obj.unset
    • Obj.reset
    • Obj.changed

    Use those functions like this:

    Obj.set(person, {age: 11, height: 50, favoriteColor: 'rainbow'});
        //=> {name: 'Joey', age: 11, height: 50, favoriteColor: 'rainbow'}
    
    Obj.unset(person, ['favoriteColor']);
        //=> {name: 'Joey', age: 11, height: 50}
    
    Obj.reset(person, {name: 'Bob', age: 6});
        //=> {name: 'Bob', age: 6}
    
    person.age++;
    Obj.changed(person);
        //=> {name: 'Bob', age: 7}
    

    Unsubscribe

    Obj.unsubscribe(person); // Unsubscribe all
    Obj.unsubscribe(person, [fn1, fn2]); // Unsubscribe one or more functions
    

    Helper functions

    You also get four bonus helper functions. Obj.has for safe hasOwnProperty checks and Obj.keys which returns an array of an object's keys, Obj.type as a more robust typeof, and Obj.extend for cloning and extending simple objects. Obj.keys uses the native Object.keys if available.

    Obj.has(person, 'name');          //=> true
    Obj.keys(person);                 //=> ['name', 'age']
    Obj.type([]);                     //=> 'array'
    Obj.extend(person, {height: 50}); //=> {name: 'Bob', age: 7, height: 50}
    

    Customize

    All the code is very modular, so you can easily delete the parts you don't use.

    You can also add your own methods:

    Obj.increment = function(obj, key) {
        obj[key]++;
        Obj.changed(obj); // Notify subscribers of change
    };
    Obj.increment(person, 'age');
    

    Install

    npm i object-subscribe

    DownloadsWeekly Downloads

    7

    Version

    2.1.0

    License

    Unlicense

    Last publish

    Collaborators

    • daniel-hug