js-property-observer

1.0.3 • Public • Published

property-observer

Install

bower install property-observer --save
npm install js-property-observer --save

How To

    /**
     * property observer
     *
     * @param {Object} object
     * @param {String} property
     * @param {Object} options
     *
     * @event {void} get({ObjectOfObservedProperty}, {PropertyName}, value [, PARAMETERS]) fires if some whants to get the value
     * @event {*} get:before({ObjectOfObservedProperty}, {PropertyName} [, PARAMETERS]) fires before if some wants to get the value. if callback returns a value other then undefined, this value will be retruned from get
     * @event {void} get:after({ObjectOfObservedProperty}, {PropertyName}, value [, PARAMETERS]) fires after if some wants to get the value.
     *
     * @event {void} set({ObjectOfObservedProperty}, {PropertyName}, newValue, oldValue) fires if some whants to set the value
     * @event {*} set:before({ObjectOfObservedProperty}, {PropertyName}, newValue, oldValue) fires before if some wants to set the value. if callback returns FALSE the value will not be setted
     * @event {void} set:after({ObjectOfObservedProperty}, {PropertyName}, newValue, oldValue) fires after if some wants to set the value.
     *
     * @example
     * <code>
     * 		var subject =
     * 		{
     * 			x: 10,
     * 			y: function(a, b, c)
     * 			{
     * 				console.log('nuff', a, b, c);
     * 			}
     * 		};
     *
     * 		var observer = new PropertyObserver(subject, 'x',
     * 		{
     * 			on:
     * 			{
     * 				'get': function(event, object, propertyName, value)
     * 				{
     * 					console.log('property: get', event, object, propertyName, value);
     * 				},
     * 				'get:before': function(event, object, propertyName)
     * 				{
     * 					console.log('property: get:before', event, object, propertyName);
     * 				},
     * 				'get:after': function(event, object, propertyName, value)
     * 				{
     * 					console.log('property: get:after', event, object, propertyName, value);
     * 				},
     * 				'set': function(event, object, propertyName, newValue, oldValue)
     * 				{
     * 					console.log('property: set', event, object, propertyName, newValue, oldValue);
     * 				},
     * 				'set:before': function(event, object, propertyName, newValue, oldValue)
     * 				{
     * 					console.log('property: set:before', event, object, propertyName, newValue, oldValue);
     * 				},
     * 				'set:after': function(event, object, propertyName, newValue, oldValue)
     * 				{
     * 					console.log('property: set:after', event, object, propertyName, newValue, oldValue);
     * 				}
     * 			}
     * 		});
     *
     * 		subject.x = 9;
     * 		subject.x = 10;
     * 		var x = subject.x;
     * 		subject.y();
     *
     * 		observer.unobserve();
     * 		subject.x = 512;
     *
     * 		// outputs on console
     * 		//
     * 		// property: set:before Object {x: (...), y: function} x 9
     * 		// property: set Object {x: (...), y: function} x 9
     * 		// property: set:after Object {x: (...), y: function} x 9
     * 		// property: set:before Object {x: (...), y: function} x 10
     * 		// property: set Object {x: (...), y: function} x 10
     * 		// property: set:after Object {x: (...), y: function} x 10
     * 		// property: get:before Object {x: (...), y: function} x
     * 		// property: get Object {x: (...), y: function} x 10
     * 		// property: get:after Object {x: (...), y: function} x 10
     * 		// nuff undefined undefined undefined
     * </code>
     */

Readme

Keywords

none

Package Sidebar

Install

npm i js-property-observer

Weekly Downloads

1

Version

1.0.3

License

MIT

Last publish

Collaborators

  • dasred