How about Array? Without it one can not build useful nested data-structures (tree) where for e.g. a JSON compatible data-structure each data-node (branch) is either an object or an array (representing a list) and where the leafs are primitive values like boolean, number and string or the null value.
In addition typeof null returning “object” is not a bug, it’s a feature; it is intentional. And not a team, but a single person designed it that way. The test for null is (value === null) and testing for any non primitive type except the “function” type is done by (!value && typeof value === ‘object’).
And typeof yielding “function” for any kind of function-object (yes Function inherits from Object) proves that the author’s statement … “We can refer object as a key-value pair and it is one of the most important data types in JavaScript which is similar to functions.” … which reads like “objects are similar to functions” … is by far misleading, if not utter nonsense.