I was expecting the 2nd call of the \"taco\" function to generate a runtime error since I am not calling it with the \"this\" keyword:
function foo() {
v
The reason is this in foo(), when it's called just as is, will reference a global object. This means taco function will be introduced in the global scope.
To get the functionality you want use new foo() syntax instead. Then this will refer to a new object, which taco property will be assigned a new value (function). Calling taco directly will get you an error then.