lib/base/property.js
function custom (properties, property, key, event) {
  if (property === null) {
    properties[key] = null
  } else if (property.val) {
    property.val = parseProperty(property.val)
    var prototype = property.val.prototype
    if (prototype && prototype instanceof Base) {
      if (property.override) {
        properties._overrides = properties._overrides || {}
        properties._overrides[key] = property.override
        properties[key] = Properties
          .createPropertyConstructor(property.val, property.override, true)
        properties[key].override = property.override
        properties[property.override] = properties[key]
      } else {
        this[key] = properties[key] = prototype
        prototype._parent = this
      }
    } else {
      if (property.override) {
        properties[key] = Properties.createPrimitiveProperty(property.override)
      } else {
        properties[key] = Properties.default
      }
      properties[key].call(this, property.val, void 0, void 0, key)
    }
  } else if (key !== '_overrides') {
    if (property.type) {
      let res = this.getType(property, event, key, void 0)
      if (res instanceof Base) {
        properties[key] = Properties
        .createPropertyConstructor(new res.Constructor(property, false, this, key).Constructor, key)
        return
      }
    }
    properties[key] = Properties
      .createPropertyConstructor(new this.Child(property, false, this, key).Constructor, key)
  }
}
function custom (properties, property, key, event) {
  if (property === null) {
    properties[key] = null
  } else if (property.val) {
    property.val = parseProperty(property.val)
    var prototype = property.val.prototype
    if (prototype && prototype instanceof Base) {
      if (property.override) {
        properties._overrides = properties._overrides || {}
        properties._overrides[key] = property.override
        properties[key] = Properties
          .createPropertyConstructor(property.val, property.override, true)
        properties[key].override = property.override
        properties[property.override] = properties[key]
      } else {
        this[key] = properties[key] = prototype
        prototype._parent = this
      }
    } else {
      if (property.override) {
        properties[key] = Properties.createPrimitiveProperty(property.override)
      } else {
        properties[key] = Properties.default
      }
      properties[key].call(this, property.val, void 0, void 0, key)
    }
  } else if (key !== '_overrides') {
    if (property.type) {
      let res = this.getType(property, event, key, void 0)
      if (res instanceof Base) {
        properties[key] = Properties
        .createPropertyConstructor(new res.Constructor(property, false, this, key).Constructor, key)
        return
      }
    }
    properties[key] = Properties
      .createPropertyConstructor(new this.Child(property, false, this, key).Constructor, key)
  }
}
function custom ( properties , property , key , event ) { if ( property === null ) { properties [ key ] = null } else if ( property . val ) { property . val = parseProperty ( property . val ) var prototype = property . val . prototype if ( prototype && prototype instanceof Base ) { if ( property . override ) { properties . _overrides = properties . _overrides || { } properties . _overrides [ key ] = property . override properties [ key ] = Properties . createPropertyConstructor ( property . val , property . override , true ) properties [ key ] . override = property . override properties [ property . override ] = properties [ key ] } else { this [ key ] = properties [ key ] = prototype prototype . _parent = this } } else { if ( property . override ) { properties [ key ] = Properties . createPrimitiveProperty ( property . override ) } else { properties [ key ] = Properties . default } properties [ key ] . call ( this , property . val , void 0 , void 0 , key ) } } else if ( key !== '_overrides' ) { if ( property . type ) { let res = this . getType ( property , event , key , void 0 ) if ( res instanceof Base ) { properties [ key ] = Properties . createPropertyConstructor ( new res . Constructor ( property , false , this , key ) . Constructor , key ) return } } properties [ key ] = Properties . createPropertyConstructor ( new this . Child ( property , false , this , key ) . Constructor , key ) } }
make an easy option to use childconstrucor for val
make an easy option to use childconstrucor for val