Что такое reference?

В переводе с английского reference – это ссылка. Википедия говорит, что ссылка (в программировании) — это объект, указывающий на определенные данные, но не хранящий их.

Во "взрослом" программировании есть еще понятие указатель. Чисто формально, ссылка и указатель – это разные вещи. Но так сложилось, что оба эти слова используются в описании скриптового кода как одно понятие. Я тоже использую их оба одинаково. Ведь главное не слова, а смысл. Так в чем же смысл reference?

Лучше объяснить это на примерах. Самый популярный reference, встречающийся в большинстве скриптов – это ссылка на активный документ. Код выглядит так:

var docRef = app.activeDocument;

Переменной docRef присваивается не число или текст, а выражение app.activeDocument, которое определяет активный документ приложения.

Таким образом, в переменной docRef теперь содержится ссылка на активный документ. Другими словами docRef — это reference документа. Само название (имя переменной) может быть практически любым, кроме некоторых исключений. Вы можете назвать ее doc, document, activeDoc или aDoc. Это не важно. Главное, что теперь имя переменной docRef вы можете использовать вместо конструкции app.activeDocument. Например, для обращения к объектам этого документа.

Второй по популярности reference, это ссылка на выделенный объект/объекты в активном документе. Код будет следующим:

var docSelected = app.activeDocument.selection;

Опять же, имя переменной может быть и другим. Переменная docSelected теперь содержит указатель (ссылку или reference) на выделение в активном документе. Недостаток этого кода в том, что если в скрипте нам вдруг понадобится обратиться к не к выделению, а к другому объекту документа, то придется снова писать конструкцию app.activeDocument. Чтобы избежать этого, обычно данную строку разбивают на две:

var docRef = app.activeDocument;
var docSelected = docRef.selection;

Как видите, во второй строке, мы уже используем reference вместо выражения app.activeDocument.

Теперь, чтобы обратится к какому-то объекту документа, можно использовать переменную docRef, а если надо что-то сделать с выделением, то – переменную docSelected.

Создавать ссылки (указатели) можно для любого объекта, к которому есть доступ в объектной модели Illustrator. Это могут быть документы, слои, выделение, монтажные области, графические объекты (контуры, текст, изображения) и др.

Полный список этих объектов можно посмотреть в документации Adobe Illustrator Scripting Reference: Javascript.

Теперь вы знаете, что такое reference.

Welcome to the world of programming! :)


СтатьиСледующая