This section provides an overview of a unique feature of JavaScript language: functions are objects of the 'Function' type.
One very interesting feature the JavaScript language is that a function is an object of the Function object type.
Treating functions as objects can lead to several programming implications:
JavaScript supports a special built-in object type called "Function".
A function can be created with the Function() constructor.
A function has inherited properties and methods: length, apply(), call(), and toString().
A function can have its own instance properties - nice way to share values across multiple function calls.
A function can be created as part of an expression.
A function can be passed as a parameter into other functions.
A function can be created in 3 different ways:
Using the "function" declaration statement - Creating a function in the traditional way.
Using the "function" operator - Creating a function as a function literal on the fly while evaluating an expression.
Using the "Function()" constructor Creating a function in the object-oriented way.