ProxyObserver

Monster.Types. ProxyObserver

An observer manages a callback function

You can call create the class via the monster namespace new Monster.Types.ProxyObserver().

<script type="module">
import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.30.0/dist/monster.js';
new Monster.Types.ProxyObserver()
</script>

Alternatively, you can also integrate this class individually.

<script type="module">
import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.30.0/dist/modules/types/proxyobserver.js';
new ProxyObserver()
</script>

with the ProxyObserver you can attach observer for observation. with each change at the object to be observed an update takes place.

this also applies to nested objects.

Constructor

# new ProxyObserver(object)

Parameters:
Name Type Description
object object
Since:
  • 1.0.0
Throws:

value is not a object

Type
TypeError
Example
import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.30.0/dist/modules/types/proxyobserver.js';
import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.30.0/dist/modules/types/observer.js';
import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.30.0/dist/modules/types/is.js';

const o = new Observer(function () { 
  if (isObject(this) && this instanceof ProxyObserver) {
      // do something (this ist ProxyObserver)
      const subject = this.getSubject();
      console.log(subject);
  }
});

let realSubject = {
  a: {
      b: {
          c: true
      },
      d: 9
  }
}

const p = new ProxyObserver(realSubject);
p.attachObserver(o);
const s = p.getSubject();
s.a.b.c = false;

Methods

# attachObserver(observer) → {ProxyObserver}

attach a new observer

Parameters:
Name Type Description
observer Observer
Returns:
Type
ProxyObserver

# containsObserver(observer) → {boolean}

Parameters:
Name Type Description
observer Observer
Returns:
Type
boolean

# detachObserver(observer) → {ProxyObserver}

detach a observer

Parameters:
Name Type Description
observer Observer
Returns:
Type
ProxyObserver

# getRealSubject() → {object}

get the proxied object

Returns:
Type
object

# getSubject() → {object}

get the real object

changes to this object are not noticed by the observers, so you can make a large number of changes and inform the observers later.

Returns:
Type
object

# notifyObservers() → {Promise}

notify all observer

Returns:
Type
Promise

# setSubject(obj) → {Monster.Types.ProxyObserver}

Parameters:
Name Type Description
obj Object
Since:
  • 1.24.0