Что ж, из моих личных тестов оператор with () на самом деле оказался немного медленнее. Это не имеет большого значения, если вы не пытаетесь выжать из фильма все последние унции производительности. То же самое можно сказать о выполнении циклов for для переменных вместо констант или циклов while и v для циклов. Если вы не составляете эти циклы во множестве итераций, вам не нужно об этом беспокоиться.
Что касается читабельности кода, я думаю, что это делает его более понятным при использовании with (). Все сводится к стилю кодирования. Единственный раз, когда я действительно использую оператор with (), это, скажем, известная цель. Допустим, у вас есть обработчик событий мыши, который выбирает объекты по щелчку и устанавливает его как currentObject. Тогда вы можете иметь функцию, которая делает что-то вроде
with(currentObject)
{
x = 100;
y = 100;
alpha = 0.5;
}
Конечно, вы могли бы сделать это другими способами, но, как я уже сказал. Все сводится к стилю кодирования. Единственная экономия, которую я действительно вижу при использовании этого метода, это сокращение нажатий клавиш по сравнению с делом currentObject.x = 100; currentObject.y = 100;