_initFields(props) {
        const propsObj = Object(props);
        this._fields = { ...propsObj };

        Object.keys(propsObj).forEach((fieldName) => {
            // In this case, we got a prop that wasn't defined as a field.
            // Assuming it's an arbitrary data field, making an instance-specific
            // descriptor for it.
            // Using the in operator as the property could be defined anywhere
            // on the prototype chain.
            if (!(fieldName in this)) {
                Object.defineProperty(this, fieldName, {
                    get: () => this._fields[fieldName],
                    set: (value) => this.set(fieldName, value),
                    configurable: true,
                    enumerable: true,
                });
            }
        });
    }
Creates a Model instance from it's properties.
Don't use this to create a new record; Use the static method {@link Model#create}.
@param  {Object} props - the properties to instantiate with