I have been doing something like this for a while and I have never seen any errors. But, unfortunately, I have never been able to explain why this works.
The first line creates a variable which points to a function. The second line just adds func2 to func1 separated by a dot and defines a function.
If I add a var in front of func1.func2 then I see a compilation error.
func1.func2 = function(){};
Error
SyntaxError: missing ; before statement
var func1.func2 = function(){};
What type was func1 on first line 1 and what did it become on line 2.
var func1 = function(){};
func1.func2 = function(){};
func1is a Function Object and as such, can have properties dynamically assignedvar func1, you are creating a new variable calledfunc1.func1.func2doesn't create a new variable, it adds a property to a variable that already exists.varin front of it, then you're creating a variable and variable names can't have periods. That's why you get an error.