packages/frm/src/record/construct.js
function getPrototype(model) {
  if (model.__recordPrototype) return model.__recordPrototype;

  const mrProto = Object.assign({}, proto);// eslint-disable-line no-use-before-define
  const extraProperties = {};
  Object.keys(model.def.fields).forEach((fieldName) => {
    extraProperties[fieldName] = {
      enumerable: true,
      get() {
        const value = getf.call(this, fieldName);
        return value;
      },
      set(value) {
        return setf.call(this, fieldName, value);
      },
    };
  });
  Object.defineProperties(mrProto, extraProperties);
  model.__recordPrototype = mrProto;
  return mrProto;
}
function getPrototype(model) {
  if (model.__recordPrototype) return model.__recordPrototype;

  const mrProto = Object.assign({}, proto);// eslint-disable-line no-use-before-define
  const extraProperties = {};
  Object.keys(model.def.fields).forEach((fieldName) => {
    extraProperties[fieldName] = {
      enumerable: true,
      get() {
        const value = getf.call(this, fieldName);
        return value;
      },
      set(value) {
        return setf.call(this, fieldName, value);
      },
    };
  });
  Object.defineProperties(mrProto, extraProperties);
  model.__recordPrototype = mrProto;
  return mrProto;
}
function getPrototype ( model ) { if ( model . __recordPrototype ) return model . __recordPrototype ; const mrProto = Object . assign ( { } , proto ) ; // eslint-disable-line no-use-before-define const extraProperties = { } ; Object . keys ( model . def . fields ) . forEach ( ( fieldName ) => { extraProperties [ fieldName ] = { enumerable : true , get ( ) { const value = getf . call ( this , fieldName ) ; return value ; } , set ( value ) { return setf . call ( this , fieldName , value ) ; } , } ; } ) ; Object . defineProperties ( mrProto , extraProperties ) ; model . __recordPrototype = mrProto ; return mrProto ; }
get model specified record prototype
get model specified record prototype