In javascript, "with" is confusing and ambiguous. I don't know about other languages, but in Visual Basic, there is an extremely clear of the context and which variables you're requesting from the context. In JS, you have something like this:
Code:
with (employee) {
ID = 1;
name = "John";
}
It's not clear whether you're attributing to employee.name or some name variable outside of the block scope. In Visual Basic, this is solved in a genius way. It requires a dot to "search" on the context variable and there's no ambiguity.
Code:
With employee
.ID = 1
.name = "John"
End With