Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Даже создатели Dojo не читают документацию

Почему-то всегда хочется думать, что создатели больших фреймворков уж точно детально изучили вопрос. Между тем, они обычные люди. Как известно, в реализации JavaScript в IE нет сеттеров и геттеров. Зато они есть в VBScript (который кажется куда более проработанным языком в IE):

Class Sample
  Public Property Let someprop(val)
    …
  End Property
  Public Property Set someprop(val)
    …
  End Property
  Public Property Get someprop
    …
  End Property
End Class

Два вида сеттеров связаны с тем, что в VBScript довольно чётко различаются передача по ссылке и по значению (например, можно в параметрах функции указать «ByRef» или «ByVal»), кроме того, у сеттеров и геттеров есть ещё один параметр, благодаря чему можно перехватывать вызов методов и делать совсем уж странные, с точки зрения JavaScript, штуки.

Впрочем, к чёрту подробности.

Один из разработчиков JS-фреймворка Dojo реализовал в нём эмуляцию сеттеров и геттеров для IE, но в его примере есть некрасивая штука — глобальная функция dj_exec_vb_global, которая описана внутри тега SCRIPT с указанным языком VBScript и предназначена для вызова VBScript из JavaScript.

Но в IE уже есть специальный метод объекта window, который занимается тем же — execScript, вторым параметром надо задать «vbscript» и voilà!, мы вызываем VBScript из JavaScript.

Я этот метод когда-то использовал внутри JUnix (это был эмулятор CLI Linux на JavaScript).

6 комментариев
warmland.ru 2010

s/viola/voilà

guest 2010

и viola!

наверное все-таки «voila», потому как viola либо музыкальный инструмент, либо сыр

proforg.gmail.com 2010

специальный объекта — тоже ОК !

Евгений Степанищев (bolknote.ru) 2010

Спасибо всем, исправил опечатки!

Артём Сапегин (sapegin.ru) 2010

Ну и «windows» тогда уж в предпоследнем абзаце.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для sapegin.ru:

Да что ж такое! Спасибо :)