function Dative(options = {}) {
  if (!('DOMParser' in window)) warn('Your Browser Doesnt support DativeJs.');
  if (!(this instanceof Dative)) warn('Dative Must be called as a constructor');
    var $this = this;
    $this.options = options;
    //$this.elem = $this.options.target;
    var _data = makeProxy(options, $this)
    $this.template = $this.options.template;
    $this.created = $this.options.created;
    $this.mounted = $this.options.mounted;
    $this.update = $this.options.update;
    $this.methods = $this.options.methods;
    $this.store = $this.options.store;
    $this.$ref = {};
    $this.debounce = null;
    $this.updated = false;
    Object.defineProperty(this, 'data', {
      get: function() {
        return _data;
      },
      set: function(data) {
        _data = new Proxy(data || {}, dataHandler(this));
        debounceRender(this);
        return true;
      },
      configurable: true
    })
  if (this.created !== undefined && this.created !== null) {
      this.created();
    }  	
  /**
   * initialize mounted hooks
  **/  
    if (this.mounted !== undefined && this.mounted !== null) {
    this.mounted();
  }
  const computed = $this.options.computed;
  if (!computed) return false;
  for (let key in computed) {
    const value = computed[key];
    if (typeof value === 'function') {
      Object.defineProperty(this.data, key, {
        get: value,
        enumerable: true,
        configurable: true,
      });
    }
  }
  this.render();
}
/**
 * Create the Dative Instance
 * @param {Object} options The component options
 */
Create the Dative Instance
@param {Object} options The component options
Create the Dative Instance @param { Object } options The component options
function Dative(options = {}) {
  if (!('DOMParser' in window)) warn('Your Browser Doesnt support DativeJs.');
  if (!(this instanceof Dative)) warn('Dative Must be called as a constructor');
    var $this = this;
    $this.options = options;
    var _data = makeProxy(options, $this)
    $this.template = $this.options.template;
    $this.created = $this.options.created;
    $this.mounted = $this.options.mounted;
    $this.update = $this.options.update;
    $this.methods = $this.options.methods;
    $this.store = $this.options.store;
    $this.$ref = {};
    $this.debounce = null;
    $this.updated = false;
    Object.defineProperty(this, 'data', {
      get: function() {
        return _data;
      },
      set: function(data) {
        _data = new Proxy(data || {}, dataHandler(this));
        debounceRender(this);
        return true;
      },
      configurable: true
    })
  if (this.created !== undefined && this.created !== null) {
      this.created();
    }  	
    if (this.mounted !== undefined && this.mounted !== null) {
    this.mounted();
  }
  const computed = $this.options.computed;
  if (!computed) return false;
  for (let key in computed) {
    const value = computed[key];
    if (typeof value === 'function') {
      Object.defineProperty(this.data, key, {
        get: value,
        enumerable: true,
        configurable: true,
      });
    }
  }
  this.render();
}
function Dative ( options = { } ) { if ( ! ( 'DOMParser' in window ) ) warn ( 'Your Browser Doesnt support DativeJs.' ) ; if ( ! ( this instanceof Dative ) ) warn ( 'Dative Must be called as a constructor' ) ; var $this = this ; $this . options = options ; var _data = makeProxy ( options , $this ) $this . template = $this . options . template ; $this . created = $this . options . created ; $this . mounted = $this . options . mounted ; $this . update = $this . options . update ; $this . methods = $this . options . methods ; $this . store = $this . options . store ; $this . $ref = { } ; $this . debounce = null ; $this . updated = false ; Object . defineProperty ( this , 'data' , { get : function ( ) { return _data ; } , set : function ( data ) { _data = new Proxy ( data || { } , dataHandler ( this ) ) ; debounceRender ( this ) ; return true ; } , configurable : true } ) if ( this . created !== undefined && this . created !== null ) { this . created ( ) ; } if ( this . mounted !== undefined && this . mounted !== null ) { this . mounted ( ) ; } const computed = $this . options . computed ; if ( ! computed ) return false ; for ( let key in computed ) { const value = computed [ key ] ; if ( typeof value === 'function' ) { Object . defineProperty ( this . data , key , { get : value , enumerable : true , configurable : true , } ) ; } } this . render ( ) ; }
Create the Dative Instance
 @param {Object} options The component options
Create the Dative Instance @param { Object } options The component options
//$this.elem = $this.options.target; /**
   * initialize mounted hooks
  **/