src/lib/thirdparty/sorttable.js
function forEach (object, block, context) {
	if (object) {
		let resolve = Object; // default
		if (object instanceof Function) {
			// functions have a "length" property
			resolve = Function;
		} else if (object.forEach instanceof Function) {
			// the object implements a custom forEach method so use that
			object.forEach(block, context);
			return;
		} else if (typeof object === "string") {
			// the object is a string
			resolve = String;
		} else if (typeof object.length === "number") {
			// the object is array-like
			resolve = Array;
		}
		resolve.forEach(object, block, context);
	}
}
function forEach (object, block, context) {
	if (object) {
		let resolve = Object; // default
		if (object instanceof Function) {
			// functions have a "length" property
			resolve = Function;
		} else if (object.forEach instanceof Function) {
			// the object implements a custom forEach method so use that
			object.forEach(block, context);
			return;
		} else if (typeof object === "string") {
			// the object is a string
			resolve = String;
		} else if (typeof object.length === "number") {
			// the object is array-like
			resolve = Array;
		}
		resolve.forEach(object, block, context);
	}
}
globally resolve forEach enumeration