JScript

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:12, 1 июня 2016.
JScript
Парадигма императивный
Спроектировано Microsoft
Первый   появившийся 1996
Стабильная версия 9.0 / March 2011
Печать дисциплины нестрогая, динамическая
Портал: JScript
Под влиянием
JavaScript
Влияние
JScript.NET

JScript — это язык программирования от компании Microsoft. Он предназначен для создания сценариев и является реализацией стандарта ECMAScript. Синтаксис JScript во многом аналогичен языку JavaScript от компании Netscape. JScript по умолчанию поддерживается в Windows Script Host (WSH), который в свою очередь по умолчанию устанавливается вместе с почти любой версией Windows. Если у вас слишком старая версия Windows, вы можете скачать WSH с сайта Microsoft и самостоятельно установить его. Сценарии на языке JScript чаще всего используются в следующих областях:

  • Клиентские сценарии на Web-страницах.
  • Автоматизация администрирования систем Windows.
  • Серверный программный код на страницах ASP в Web-приложениях.

Язык JScript получил дальнейшее развитие в виде языка JScript.NET, который ориентирован на работу в рамках платформы Microsoft ASP.NET.

Особенности

JScript Массивы

Объект Массив является переменной, что группы, связанные части данных. Уникальный номер, называемый индекс или индекс, справки каждый фрагмент данных в массиве. Чтобы получить доступ к данным, хранящимся в массиве, идентификатор массива и индекс в сочетании с оператором индекса "[]", например, несколько month[0].

var theMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", 
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

Использование Expando свойств массива

Массив объектов, как любой другой объект, основанный на объекте JScript объектов, поддержка Expando свойства. Свойства Expando новые свойства, которые динамически добавлять и удалять из массива, как индексы массива. В отличие от индексов массива, которые должны быть целыми числами, Expando свойства являются строками. Кроме того, добавление или удаление свойства Expando не изменяет войство длины.

// Initialize an array with three elements.
var myArray = new Array("Hello", 42, new Date(2000,1,1));
print(myArray.length); // Prints 3.
// Add some expando properties. They will not change the length.
myArray.expando = "JScript";
myArray["another Expando"] = "Windows";
print(myArray.length); // Still prints 3.

Типизированные массивы

Другой быстрый способ, чтобы создать массив theMonths приведенный выше, чтобы создать типизированный (родной) массив, в данном случае, массив строк:

var theMonths : String[] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

JScript Присвоения и равенства

В JScript, оператор присваивания присваивает значение переменной. Оператор равенства сравнивает два значения.

==== Присвоения ====Как и многие языки программирования, JScript использует знак равенства (=), чтобы назначить значения переменным: это оператор присваивания. Левый операнд оператора = должна быть Lvalue, что означает, что она должна быть переменной, элементом массива или свойство объекта. Право операнд оператора = должна быть Rvalue. В RValue может быть произвольное значение любого типа, в том числе ценности, которая является результатом выражения. Ниже приведен пример оператора присваивания JScript.

var i : int = 29;
var x : double = i;

Равенства

В отличие от некоторых других языков программирования, сценарий не использовать знак равенства в качестве оператора сравнения, но только в качестве оператора присваивания. Для сравнения между двумя значениями, можно использовать либо оператор равенства (==) или оператор строгого равенства (===). Сравнения в сценариях всегда есть логическое результат. Рассмотрим следующую строку кода JScript.

y = (x == 2000);

JScript Комментарии

Однострочный комментарий начинается в JScript с пары косых черт (//).

// This is a single-line comment.
aGoodIdea = "Comment your code for clarity.";

Многострочный комментарий в JScript начинается в с косой черты и звездочки (/*), и заканчивается с обратным (*/).

/*
This is a multiline comment that explains the preceding code statement.
The statement assigns a value to the aGoodIdea variable. The value, 
which is contained between the quote marks, is called a literal. A 
literal explicitly and directly contains information; it does not 
refer to the information indirectly. The quote marks are not part 
of the literal.
*/

JScript Выражения

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

3.9                               // numeric literal
"Hello!"                          // string literal
false                             // Boolean literal
null                              // literal null value
[1,2,3]                           // Array literal
var o = {x:1, y:2}                // Object literal
var f = function(x){return x*x;}  // function literal

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

4 + 5        // additon
x += 1       // addition assignment
10 / 2       // division
a & b        // bitwise AND

JScript Индентификаторы

В JScript, Идентификаторы используются для:

  • Имя переменных, констант, функций, классов, интерфейсов и перечислений
  • Реже используются как имена для циклов
_pagecount 
Part9 
Number_Items
99Balloons // Cannot begin with a number. 
Smith&Wesson // The ampersand (&) character is not a valid character for variable names.

JScript Утверждения

Программа JScript представляет собой сборник высказываний.CScript заявление, что эквивалентно полной предложении на естественном языке, сочетает в себе выражения, которые выполняют одну полную задачу.

var aBird = "Robin"; // Assign the text "Robin" to the variable aBird.
var today = new Date(); // Assign today's date to the variable today.

JScript Типы данных

JScript обеспечивает 13 примитивных типов данных и 13 типов базовых данных. В дополнение к этому, вы можете объявить новые типы данных или использовать любой из спецификации Common Language типов (CLS) -совместимый данных .NET Framework. Этот раздел содержит информацию о встроенных типов данных, как расширить эти типы, как определить свои собственные типы данных, как вводить данные, и как конвертировать данные из одного типа в другой.[1]

JScript Переменные и константы

Переменные и постоянные хранилища данных, который скрипты могут легко ссылаться, используя имя переменной или постоянной. Данные, хранящиеся на переменной может изменяться в программу трасс, а данные хранятся в постоянной не может измениться. Сценарий, который использует переменную самом деле доступ к данным, что переменная представляет. Вот пример, в котором переменная с именем NumberOfDaysLeft присваивается значение, полученное из разности между EndDate и TodaysDate.

NumberOfDaysLeft = EndDate – TodaysDate;

JScript Объекты

Объекты JScript инкапсулируют данные и функциональные возможности. Объекты состоят из свойств (значений) и методов (функций). Свойства представляют собой компонент данных объекта, тогда как методы предоставляют функциональные возможности для управления данными или объектом. В JScript поддерживается пять видов объектов: встроенные объекты, объекты на базе прототипов, объекты на базе классов, хост-объекты (предоставленные хост-средой, например объект Response в ASP.NET) и классы .NET Framework (внешние компоненты).

Создание и инициализация экземпляров объектов выполняется с помощью оператора new, используемого вместе с функцией конструктора для выбранного объекта. Ниже приведено несколько примеров конструкторов.

var myObject = new Object();           // Creates a generic object.
var birthday = new Date(1961, 5, 10);  // Creates a Date object.
var myCar : Car = new Car("Pinto");    // Creates a user-defined object.

В JScript поддерживается два типа пользовательских объектов (на базе классов и на базе прототипов). Каждый из этих типов имеет свои преимущества и свои недостатки. Объекты на базе прототипов можно динамически расширять, однако они не обеспечивают высокую производительность и плохо взаимодействуют с объектами из других языков, поддерживаемых .NET Framework. Объекты на базе классов, с другой стороны, могут расширять существующие классы .NET Framework и позволяют обеспечить безопасность типов и повысить эффективность операций. Объекты на базе классов также можно расширять динамически (подобно объектам на базе прототипов). Для этого в определении класса необходимо указать модификатор expando.

JScript Модификаторы

Модификаторы JScript определяют поведение и видимость классов, интерфейсов и членов классов или интерфейсов. Модификаторы можно использовать при определении классов и интерфейсов, но обычно это не обязательно.

Модификаторы Видимости

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

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

Модификаторы видимости нельзя применять к глобальным функциям и переменным. Совместно можно использовать всего два модификатора видимости: protected и internal.

Модификаторы Наследования

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

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

В некоторых ситуациях может потребоваться запретить переопределение метода базового класса. Например, при определении класса в пакете можно использовать модификатор final, чтобы запретить производным классам изменять методы и свойства данного класса.

С другой стороны, может потребоваться переопределять некоторые методы класса. Например, можно создать класс, в котором предоставляются определенные базовые функциональные возможности, но для остальных методов используется модификатор abstract. Реализовать абстрактные методы предоставляется разработчику производного класса.

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

Нельзя одновременно использовать два модификатора наследования или объединять модификатор наследования с модификатором static.

Модификаторы Безопастности версий

С помощью модификаторов безопасности версий можно управлять методами производного класса, которые переопределяют методы базового класса. Благодаря такому управлению можно указывать, будет ли создаваемый класс переопределять методы базового класса.

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

В некоторых ситуациях может потребоваться запретить переопределение методов базового класса. Например, можно расширить класс, чтобы изменить поведение методов базового класса. Если требуется запретить переопределение этих методов базового класса, можно использовать модификатор hide в объявлениях методов.

С другой стороны, иногда возникает необходимость переопределять некоторые методы базового класса. Например, может потребовать изменить методы класса без изменения самого класса. Расширяя класс и используя модификатор override в объявлениях методов, можно разрешить новым методам переопределять базовый класс.

Успех применения модификаторов безопасности версий зависит от того, используются ли в объявлениях методов базового класса модификаторы наследования. Методы базового класса, помеченные модификатором final, нельзя переопределить, а методы базового класса с модификатором abstract можно скрыть только в том случае, если предоставлена явная реализация метода базового класса.

Невозможно одновременно использовать два модификатора безопасности версий или объединять модификатор безопасности версий с модификатором static. При выполнении в режиме безопасности версий можно использовать только один модификатор безопасности версий для каждого метода, переопределяющего метод базового класса.

Модификатор Expando

Модификатор expando указывает основанному на классе объекту вести себя так, как если бы он был объектом JScript. В объект expando можно динамически добавлять методы и свойства. Дополнительные сведения см. в разделе Объекты на базе прототипов.

Модификатор expando можно использовать независимо от других модификаторов.

Модификатор static

Модификатор static означает, что член класса принадлежит самому классу, а не экземплярам класса. Следовательно, данные и методы, относящиеся к классу, нельзя связать с каким-либо отдельным экземпляром.

Модификатор static нельзя использовать одновременно с одним из модификаторов наследования или безопасности версий.

JScript Операторы

В JScript содержится целый ряд операторов, которые можно разделить на вычислительные, логические, побитовые операторы, операторы присвоения, а также некоторые прочие операторы. Операторы объединяют простые выражения для создания более сложных выражений.

JScript Функции

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

Функция объединяет несколько операций под одним именем, что позволяет оптимизировать код и использовать его повторно. Можно написать набор операторов, присвоить ему имя, а затем выполнять весь набор, вызывая его по имени и передавая ему необходимые данные.

Чтобы передать данные в функцию, заключите их в скобки, расположенные после имени функции. Фрагменты данных, передаваемые в функцию, называются аргументами или параметрами. Некоторые функции не принимают аргументов, тогда как другие принимают один или несколько аргументов. В некоторых функциях количество аргументов зависит от способа ее использования.

В JScript поддерживаются два типа функций: встроенные в язык и пользовательские.

Приведение типов в JScript

В языке JScript можно выполнять операции со значениями разных типов, и компилятор не будет вызывать исключений. Вместо этого компилятор JScript перед выполнением операции автоматически изменяет (приводит) один из типов данных к другому. В других языках к приведению типов применяются гораздо более строгие правила.

var x = 2000;      // A number.
var y = "Hello";   // A string.
x = x + y;         // the number is coerced into a string.
print(x);          // Outputs 2000Hello.

Копирование, передача и сравнение данных

Способ копирования, передачи и сравнения данных в JScript зависит от способа их хранения, который, в свою очередь, зависит от типа данных. В JScript данные сохраняются или по значению, или по ссылке.

По значению, по ссылке

JScript копирует, передает и сравнивает числа и логические значения (true и false) по значению. При этом в памяти компьютера выделяется область в которую копируется значение оригинала. Изменение оригинала не влияет на копию (и наоборот), так как это две независимые записи. Два числа или логических значения считаются равными, если они имеют одинаковое значение.

JScript копирует, передает и сравнивает объекты, массивы и функции по ссылке. При этом создается ссылка на исходный элемент, которая используется, как если бы она являлась копией. Изменения в оригинале применяются также и к копии (и наоборот). На самом деле существует только одна запись; копия представляет собой просто ссылку на эти данные.

Для успешного сравнения по ссылке две переменные должны ссылаться на одну и ту же запись. Например, два отдельных объекта Array всегда будут неравны друг другу, даже если они содержат одинаковые элементы. Одна из переменных должна являться ссылкой на другую переменную, чтобы их сравнение было успешным. Чтобы проверить, совпадают ли элементы двух массивов, сравните результаты выполнения метода toString().

JScript также копирует и передает строки по ссылке. Способ сравнения строк зависит от того, являются ли эти строки объектами. Два объекта String (созданные с помощью new String("текст")) сравниваются по ссылке. Если одна или обе ссылки являются буквенными или примитивными строковыми значениями, они сравниваются по значению.

Параметры функции

Когда JScript передает параметр в функцию по значению, создается отдельная копия параметра, существующая только внутри этой функции. Хотя объекты и массивы передаются по ссылке, когда новое значение в функции записывается непосредственно поверх них, данное значение не применяется за пределами этой функции. За пределами функции применяются только изменения свойств объектов или элементов массивов.

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

Сравнение данных

JScript данные можно сравнивать или по значению, или по ссылке. Чтобы выполнить проверку по значению, JScript сравнивает два отдельных элемента и определяет их равенство. Обычно такое сравнение выполняется побитово. Когда проверка выполняется по ссылке, программа определяет, ссылаются ли два элемента на один и тот же элемент. Если это так, они считаются равными; если нет (хотя они могут содержать одинаковые значения), побитовое сравнение выявляет их неравенство.

Строки можно сравнивать по значению или по ссылке в зависимости от того, являются ли они объектами. Если обе ссылки являются объектами String, они сравниваются по ссылке, в противном случае они сравниваются по значению. Это позволяет сравнивать две строки как равные, если они были созданы по отдельности, но содержат одинаковые данные. Чтобы сравнить значения двух объектов String, сначала преобразуйте эти объекты в строки, не являющиеся объектами, с помощью метода toString или valueOf, а затем сравните их.

JScript Условные конструкции

Операторы в JScript обычно выполняются последовательно в том порядке, в котором они находятся в сценарии. Это называется последовательным выполнением. По умолчанию программа работает именно таким образом.

В некоторых случаях вместо последовательного выполнения работа переносится в другую часть сценария в результате определенных условий. Таким образом, вместо выполнения следующего по очереди оператора выполняется оператор, находящийся в другом месте сценария. Еще один возможный способ работы называется итерацией — это многократный повтор одной и той же последовательности операторов. Итерации часто осуществляются с помощью циклов.

JScript Зарезервированные слова (Visual Studio - JScript)

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

break case catch class const continue debugger default delete do else export extends false finally for function if import in instanceof new null protected return super switch this throw true tryh typeof var while with abstract boolean byte char decimal double enum final float get implements int interface internal long package private protected public sbyte set short static uint ulong ushort void

Версии

JScript

Оригинальный JScript является Active Scripting двигатель. Как и другие активных языков сценариев, он построен на OLE Automation | COM / OLE Automation платформы и предоставляет возможность написания сценариев для размещения приложений.

Это версия используется, когда хостинг JScript внутри веб-страницы, отображаемой Internet Explorer, в HTA (язык программирования) | HTML-приложение, в активных серверных страниц | классический ASP, принимающих скриптов Windows Script и некоторых других OLE Automation | средах автоматизации.

JScript иногда называют "классической JScript» или «Active Scripting JScript", чтобы отличить его от новых версий на основе .NET.

Некоторые версии JScript доступны для нескольких версий Internet Explorer и Windows. Например, JScript 5.7 была введена с Internet Explorer 7 | Internet Explorer 7.0 и также установлены для Internet Explorer 6 | Internet Explorer 6.0 с Windows XP XP Service Pack 3 | Service Pack 3, в то время как JScript 5.8 была введена с Internet Explorer 8 | Интернет Explorer 8.0 и также устанавливается с Internet Explorer 6.0 на Windows Mobile # Windows Mobile 6.5 | Windows Mobile 6.5.

Реализация Microsoft о ECMAScript 5th Edition в Windows 8 # Consumer Preview | Windows 8 Consumer Preview называется JavaScript и соответствующий Visual Studio 11 Экспресс Бета включает в себя "совершенно новый", полнофункциональный редактор JavaScript с улучшениями IntelliSense для HTML5 и ECMAScript 5 синтаксис, "VSDOC" аннотации для нескольких перегрузок, упрощается объектной модели документа | Конфигурация ДОМ, скобка соответствия, сборно-разборные контуров и "перейти к определению".

Version Date Introduced with[2] JScript supports various features not specified in the ECMA standard, Similar JavaScript]] version
1.0 Aug 1996 Internet Explorer 3.0]] Netscape JavaScript 1.0
2.0 Jan 1997 Windows IIS]] 3.0 Netscape JavaScript 1.1
3.0 Oct 1997 Internet Explorer 4.0]] Microsoft said JScript 3.0 was "the first scripting language to fully conform to the ECMA-262 standard". 1.3
4.0 Visual Studio]] 6.0 (as part of Visual InterDev]]) ECMA-262 1st edition 1.3
5.0 Mar 1999 Internet Explorer 5.0]] ECMA-262 2nd edition 1.4
5.1 Internet Explorer 5.01 ECMA-262 2nd edition 1.4
5.5 Jul 2000 Internet Explorer 5.5 & Windows CE]] 4.2 ECMA-262 3rd edition 1.5
5.6 Oct 2001 Internet Explorer 6.0]] & Windows CE]] 5.0 ECMA-262 3rd edition 1.5
5.7 Nov 2006 Internet Explorer 7.0]] ECMA-262 3rd edition + ECMA-327 (ES-CP) 1.5
5.8 Mar 2009 Internet Explorer 8.0]] & Internet Explorer Mobile|Internet Explorer Mobile 6.0]] 3]] 1.5
9.0 Mar 2011 Internet Explorer 9.0]] ECMA-262 5th edition 1.8.1

JScript .NET

JScript .NET является реализация Microsoft .NET из JScript, это общий язык спецификации | язык CLS и, таким образом, наследует очень мощные функции, но не хватает многих функций на языке оригинала JScript, что делает его неподходящим для многих сценариев. JScript .NET можно использовать для страниц ASP.NET и .NET приложений полных, но отсутствие поддержки этого языка в Microsoft Visual месте студии это более в качестве пути обновления для классического ASP-страниц | ASP, используя классический JScript, чем как новый язык первого класса.

Version Platform Date Introduced with Based on
7.0 CLR]] 1.0 2002-01-05 Microsoft .NET Framework]] 1.0 JScript .NET is "being developed in conjunction with ECMAScript Edition 4".
7.1 CLR]] 1.1 2003-04-01 Microsoft .NET Framework]] 1.1 ECMA-262 3rd edition
8.0 CLR]] 2.0 2005-11-07 Microsoft .NET Framework]] 2.0 ECMA-262 3rd edition
10.0 CLR]] 4.0 2010-08-03 Microsoft .NET Framework]] 4.0 ECMA-262 3rd edition

JScript .NET не поддерживается в .NET Compact Framework.

Примечание: JScript .NET версии не связаны с классическими JScript версии. JScript .NET это отдельный продукт. Даже если JScript .NET не поддерживается в Visual Studio IDE, его версии в синхронизации с другими языками .NET версии (диез (язык программирования) | C #, VB.NET, VC ++), который следует их соответствующие версии Visual Studio.

.NET Framework 3.0 и 3.5 строятся на 2,0 и не включают в себя новый релиз JScript.NET (версия 10.0 для платформы .NET Framework 4.0).

Список литературы

  1. JScript
  2. JScript
    1. https://msdn.microsoft.com/en-us/library/sz1tawa5%28v=vs.100%29.aspx
    2. Version Information (Windows Scripting - JScript), Microsoft, retrieved 2010-05-31