WSH JScript で利用できる機能まとめ

プログラミング
スポンサーリンク

はじめに

こんにちは~。みなさんお元気でしたか。

本日は、JScriptで利用できる関数をまとめてみました。いつも何となく使えるだろう古いメソッドを利用しているのですが、明確にどれが使えるのか調べたことがなかったので、調査をしました。

JScirptの機能集

JScriptとは

利用できるメソッドなどを紹介する前に、JScript言語について少し説明したいと思います。

詳細に説明すると長くなりますが、簡単に説明するとWindows用のJavaScriptに似た言語です。この言語を使って、拡張子をjsとすることで、バッチファイルとして実行することができます。

バッチファイルといえば、Windows7から標準搭載されたPowerShellなどが機能が豊富で有名です。JScript自体は、1996年に公開されて以来、2009年の5.8系で機能が止まっています。ただ、JavaScriptが利用できるというのが非常に大きいメリットになっています。

ただ、上記で記載した通り、ECMAScript 5以降の機能がJScriptには搭載されていません。そのため、今の書き方に慣れてしまっていると、使えない機能を誤って使うといったことがあります。今回はそれらの利用できる機能をまとめていきたいと思います。

なお、JavaScriptはプロトタイプベースの言語であり、オブジェクトをクラスのように利用できるということで、厳密にはクラスとは言えないかもしれませんが、ここでは分かりやすくクラス、定数、関数などと呼んで説明します。

文法

JScriptで利用できる文法をまとめていきます。

特徴としては、let / const が利用できないという点があります。全てvarで代用する必要があります。

文法JScript
switchOK
newOK
deleteOK
try / catch / finally / throwOK
let/constNG
classNG
export / import
NG
get / set
NG

Global

グローバルオブジェクトをまとめます。ここでは有名なものをピックアップして、全ては羅列していません。

種類名前JScript 5.8
クラスArrayOK
クラスconsoleNG
クラスDateOK
クラスJSONNG
クラスMathOK
クラスNumberOK
クラスObjectOK
クラスRegExpOK
クラスStringOK
定数InfinityOK
定数NaNOK
定数globalThisNG
定数nullOK
定数undefinedOK
関数decodeURIOK
関数decodeURIComponentOK
関数encodeURIOK
関数encodeURIComponentOK
関数escapeOK
関数evalOK
関数isFiniteOK
関数isNaNOK
関数parseFloatOK
関数parseIntOK
関数unescapeOK

上記の特徴としては、JSONが使えないというところがあります。evalで代用しましょう。globalThis は以下のようにすることで代用が可能です。

var globalThis = ( function() { return this; } ).apply( null, [] );

以下は、JScriptでのみ使えるグローバルオブジェクトです。WScriptとWSHは同一です。

種類名前
クラスActiveXObject
クラスError
クラスGetObject
クラスEnumerator
クラスVBArray
クラスWScript
クラスWSH
定数ScriptEngine
定数ScriptEngineBuildVersion
定数ScriptEngineMajorVersion
定数ScriptEngineMinorVersion

String

文字列を扱うクラスです。

HTMLと書いてある部分は、HTML wrapper method(HTML ラッパーメソッド)と呼ばれているものです。ウェブ標準からは削除されており、JScriptでのみしか利用できなくなる日が来るかと思われます。

特徴としては、Unicode系のメソッドがNGだということ。あとは、startsWith / endsWith / trimメソッドが使えないというのが辛いところです。

種類名前JScript 5.8
staticfromCharCodeOK
staticfromCodePointNG
staticrawNG
getlengthOK
getNNG
methodcharAtOK
methodcharCodeAtOK
methodcodePointAtNG
methodconcatOK
methodincludesNG
methodendsWithNG
methodindexOfOK
methodlastIndexOfOK
methodlocaleCompareOK
methodmatchOK
methodnormalizeNG
methodpadEndNG
methodpadStartNG
methodrepeatNG
methodreplaceOK
methodsearchOK
methodsliceOK
methodsplitOK
methodstartsWithNG
methodsubstrOK
methodsubstringOK
methodtoLocaleLowerCaseOK
methodtoLocaleUpperCaseOK
methodtoLowerCaseOK
methodtoSourceNG
methodtoStringOK
methodtoUpperCaseOK
methodtrimNG
methodtrimStartNG
methodtrimLeftNG
methodtrimEndNG
methodtrimRightNG
methodvalueOfOK
HTMLanchorOK
HTMLbigOK
HTMLblinkOK
HTMLboldOK
HTMLfixedOK
HTMLfontcolorOK
HTMLfontsizeOK
HTMLitalicsOK
HTMLlinkOK
HTMLsmallOK
HTMLstrikeOK
HTMLsubOK
HTMLsupOK

Array

配列やハッシュマップなどを扱えるクラスです。

辛いところは、isArrayが利用できないところでしょうか。

種類名前JScript 5.8
staticfromNG
staticisArrayNG
staticofNG
getlengthOK
methodconcatOK
methodcopyWithinNG
methodentriesNG
methodeveryNG
methodfillNG
methodfilterNG
methodfindNG
methodfindIndexNG
methodflatNG
methodflatMapNG
methodforEachNG
methodincludesNG
methodindexOfNG
methodjoinOK
methodkeysNG
methodlastIndexOfNG
methodmapNG
methodpopOK
methodpushOK
methodreduceNG
methodreduceRightNG
methodreverseOK
methodshiftOK
methodsliceOK
methodsomeNG
methodsortOK
methodspliceOK
methodtoLocaleStringOK
methodtoSourceNG
methodtoStringOK
methodunshiftOK
methodvaluesNG
methodvalueOfOK

 

Date

日付を扱うクラスです。なお、これ以外に日付を表すクラスとして、ActiveX 用のオブジェクト VT_DATE というのもあるので混在する際は注意してください。

Dateは、大体利用できますが、new Date(xxx)するときの文法で、ISO 形式の引数を受付できないなどといった問題があります。

種類名前JScript
staticUTCOK
staticnowNG
staticparseOK
methodgetDateOK
methodgetDayOK
methodgetFullYearOK
methodgetHoursOK
methodgetMillisecondsOK
methodgetMinutesOK
methodgetMonthOK
methodgetSecondsOK
methodgetTimeOK
methodgetTimezoneOffsetOK
methodgetUTCDateOK
methodgetUTCDayOK
methodgetUTCFullYearOK
methodgetUTCHoursOK
methodgetUTCMillisecondsOK
methodgetUTCMinutesOK
methodgetUTCMonthOK
methodgetUTCSecondsOK
methodgetYearOK
methodsetDateOK
methodsetFullYearOK
methodsetHoursOK
methodsetMillisecondsOK
methodsetMinutesOK
methodsetMonthOK
methodsetSecondsOK
methodsetTimeOK
methodsetUTCDateOK
methodsetUTCFullYearOK
methodsetUTCHoursOK
methodsetUTCMillisecondsOK
methodsetUTCMinutesOK
methodsetUTCMonthOK
methodsetUTCSecondsOK
methodsetYearOK
methodtoDateStringOK
methodtoGMTStringOK
methodtoISOStringNG
methodtoJSONNG
methodtoLocaleDateStringOK
methodtoLocaleFormatNG
methodtoLocaleStringOK
methodtoLocaleTimeStringOK
methodtoSourceNG
methodtoStringOK
methodtoTimeStringOK
methodtoUTCStringOK
methodvalueOfOK

以下は、JScriptでのみ使える機能です。

種類名前
methodgetVarDate

Number

数値を扱うクラスです。

特徴としては、判別用のメソッドが全て利用できないというところがあります。

種類名前JScript 5.8
static getEPSILONNG
static getMAX_SAFE_INTEGERNG
static getMAX_VALUEOK
static getMIN_SAFE_INTEGERNG
static getMIN_VALUEOK
static getNEGATIVE_INFINITYOK
static getNaNNG
static getPOSITIVE_INFINITYOK
staticisFiniteNG
staticisIntegerNG
staticisNaNNG
staticisSafeIntegerNG
staticparseFloatNG
staticparseIntNG
methodtoExponentialOK
methodtoFixedOK
methodtoLocaleStringOK
methodtoPrecisionNG
methodtoSourceNG
methodtoStringOK
methodvalueOfOK

Math

数学用の定数や関数を提供するクラスです。

種類名前JScript 5.8
static getEOK
static getLN2OK
static getLN10OK
static getLOG2EOK
static getLOG10EOK
static getPIOK
static getSQRT1_2OK
static getSQRT2OK
staticabsOK
staticacosOK
staticacoshNG
staticasinOK
staticasinhNG
staticatanOK
staticatan2OK
staticatanhNG
staticcbrtNG
staticceilOK
staticcosOK
staticcoshNG
staticexpOK
staticexpm1NG
staticfloorOK
staticfloundNG
statichypotNG
staticimulNG
staticlogOK
staticlog10NG
staticlog1pNG
staticlog2NG
staticmaxOK
staticminOK
staticpowOK
staticrandomOK
staticroundOK
staticsignNG
staticsinOK
staticsinhNG
staticsqrtOK
statictanOK
statictanhNG
statictruncNG

Error

JScirpt 5.8try {} catch(e) {} で取得できるeError オブジェクトです。

種類名前
getdescription
getname
getnumber
getmessage

参考

以下の資料を利用して作成しました。

おわりに

おつかれさまです~。

今日は、使える機能をまとめてみました。今までなんとなく使っていたのですが、このようにまとまっていると、使える機能が明確ですぐに分かるので楽かもしれませんね。

ありがとうございました。

コメント

  1. […] 1番目は、JScriptの貧弱な機能を改善させます(参考:JScriptの仕様)。といっても全て実装したわけではなく、String型を中心によく利用すると思われる機能のみを追加しています。また、 […]

タイトルとURLをコピーしました