Если вы чувствуете, что набрав this.buttonExample
снова и снова слишком повторы, просто назначить этот объект переменной и использовать эту переменную в остальной части заявления:
var b : Button = this.buttonExample;
b.buttonMode = true;
b.useHandCursor = true;
b.addEventListener(...);
Как уже упоминалось, есть также заявление with
, но его использование не рекомендуется, так как это затрудняет чтение кода и может привести к неожиданным результатам:
with (this.buttonExample) {
buttonMode = true;
useHandCursor = true;
addEventListener(...);
}
Вы можете, конечно, объединить эти предложения с другими трюками, как формирование цепочки заданий:
var b : Button = this.buttonExample;
b.buttonMode = b.useHandCursor = true;
b.addEventListener(...);
Будьте очень осторожны только цепи заданий таким образом, если присвоенное значение является неизменны (например true
, false
, цифры и строки, но не массивы или большинство других объектов), потому что объект будет присвоен всем переменным с левой стороны.Если значение неизменен это не имеет значения, но если это изменяемые вы можете в конечном итоге с странные результаты, как это в этом примере:
a = b = [ ];
a.push(1);
b.push(2);
trace(a); // outputs 1, 2
trace(b); // also outputs 1, 2
Причиной этого результата является то, что a
и b
как ссылки на тот же массив, и поскольку массивы являются изменяемыми, не имеет значения, как вы обращаетесь к объекту, он все равно будет изменен. a
и b
не ссылаются на разные массивы только потому, что они разные переменные.
Возможно, вы можете сделать что-то вроде следующего, но это будет не работа.
// this will NOT work
var b : Button = this.buttonExample;
(b.buttonMode = b.useHandCursor = true).addEventListener(...);
Причина, почему это работает, чтобы сказать b.buttonMode = b.useHandCursor = true
, но не добавлять .addEventListener(...)
, что значение выражения присваивания (например, b.buttonMode = true
) является значением назначен на левой стороне (например, true
). Если вы добавите .addEventListener(...)
к тому, что вы по существу говорите true.addEventListener(...)
, что явно не то, что вы хотите. Другими словами
b.buttonMode = b.useHandCursor = false;
эквивалентно
b.useHandCursor = false;
b.buttonMode = b.useHandCursor;
Что следует надеяться также сделать оговорки, упомянутые выше равнины.
Зачем ему работать? – sharvey
Я согласен с s.harvey, вы не можете просто придумать вещи и ожидать, что это сработает. – davr