Apparently, structs are subject to "with" statements as well. Well, they were called "lightweight objects" earlier on for a reason, I guess?
For example, you can do:
GML:
var someStruct = {};
with (someStruct) {
x = 123;
y = 456;
z = 789;
test = function() {
show_debug_message([x, y, z]);
}
}
someStruct.test();
And then you get the struct with properly assigned values.
Sadly, it seems GML doesn't treat its assignments as expressions, so this won't work:
GML:
with (someStruct = {}) {
// insert code here
}