function isEnumerableProperty( value, property ) {
	var bool;
	if (
		value === void 0 ||
		value === null
	) {
		return false;
	}
	bool = isEnum.call( value, property );
	if ( !bool && hasStringEnumBug && isString( value ) ) {
		// Note: we only check for indices, as properties attached to a `String` object are properly detected as enumerable above.
		property = +property;
		return (
			!isnan( property ) &&
			isInteger( property ) &&
			property >= 0 &&
			property < value.length
		);
	}
	return bool;
}
Tests if an object's own property is enumerable.

@param {*} value - value to test
@param {*} property - property to test
@returns {boolean} boolean indicating if an object property is enumerable

@example
var beep = {
    'boop': true
};

var bool = isEnumerableProperty( beep, 'boop' );
// returns true

@example
var beep = {
    'boop': true
};

var bool = isEnumerableProperty( beep, 'hasOwnProperty' );
// returns false