Как правильно совместить точечную и фигурную нотацию в какаоскрипте (скетч)?

В документации указано, что точки и скобки можно смешивать. друг с другом. Доступен даже пример:

[[context.document currentPage] deselectAllLayers];

К сожалению, этот код не работает в скетче и выдает ошибку при выполнении командой "запустить пользовательский скрипт":

SyntaxError: Unexpected identifier 'currentPage'. Expected either a closing ']' or a ',' following an array element..
Plugin “untitled script”, line 2.
»   [context.document currentPage]; «Error in command untitled script Script at path (null) does not contain a handler function named: onRun
Script executed in 0.023666s

Этого можно избежать, добавив дополнительные ( и ):

[[(context.document) currentPage] deselectAllLayers];

Почему это происходит? Доступна ли какая-либо документация, как именно можно смешивать фигурные скобки и точечную запись? Это какая-то ошибка или ожидаемое поведение?


person grigoryvp    schedule 21.08.2015    source источник


Ответы (1)


Мне кажется, это ошибка, но в документации Sketch. Помимо этого случая, который вы показали, я не смог найти другого примера, где обозначения точек и фигурных скобок используются вместе в одном выражении без круглых скобок.

Например, на странице документации о Selections говорится, что вы должны использовать следующий код, чтобы отменить выбор всего:

var doc = context.document
[[doc currentPage] deselectAllLayers]

Перейдите по этой ссылке и посмотрите в заголовке Очистка выделения: http://bohemiancoding.com/sketch/support/developer/02-common-tasks/01.html

Даже их примеры плагинов не смешивают обе нотации, как вы можете видеть здесь: https://github.com/BohemianCoding/ExampleSketchPlugins/blob/master/Hello%20World/Hello%20World.sketchplugin/Contents/Sketch/script.cocoascript.

В этом примере context.document также присваивается новой переменной перед использованием в фигурных скобках.

person Gustavo Straube    schedule 30.08.2015