function factory( ctx ) {
	return get;

	/**
	* Trap for retrieving property values.
	*
	* @private
	* @param {Object} target - target object
	* @param {(string|symbol)} property - property name
	* @param {Object} receiver - the proxy object or an object inheriting from the proxy
	* @throws {Error} invalid slice operation
	* @throws {RangeError} number of slice dimensions must match the number of ndarray dimensions
	* @returns {*} result
	*/
	function get( target, property, receiver ) {
		if ( isIntegerString( property ) ) {
			return getElement( target, property, ctx );
		}
		if ( hasProperty( target, property ) || !isString( property ) ) {
			return getValue( target, property, receiver, ctx );
		}
		if ( isCartesianIndexString( property ) ) {
			return getCartesian( target, property, ctx );
		}
		if ( isArrayIndexString( property ) ) {
			// FIXME
			return;
		}
		return getSlice( target, property, ctx );
	}
}
Returns a trap for retrieving property values.

@private
@param {Object} ctx - context object
@param {boolean} ctx.strict - boolean indicating whether to enforce strict bounds checking
@param {Function} ctx.ctor - proxied ndarray constructor
@param {Function} ctx.postGetArray - function to process a retrieved ndarray
@param {Object} ctx.cache - cache for resolving array index objects
@param {Function} ctx.prop2slice - function for converting an indexing expression to a slice
@returns {Function} handler