質問

利用した Date.prototype 私のWSH-JScriptsでは、日付計算を行うために。これらの機能もWSH-VBSに含めたいと思います。基本的に、JSとVBSコードをミキシングし、VBSスクリプトにJSファイルをWSFファイルで機能させます。

しかし、私は拡張を得ることができません Date VBSで動作するオブジェクト。それは同等のものがないからだと思います Date VBSのオブジェクトと日付は、VBSで別の方法で処理されます。

VBSの日付関数を再実装することは悪い考えのようです(他の方法がないことを確信していない限り)。 VBSスクリプトにシンプルなJSラッパーを書くことが可能です。 Date オブジェクト関数。

他のアイデアがあれば、私はそれを見ることができてとてもうれしいです。

役に立ちましたか?

解決

次のスクリプトはWindows 7で私のために機能しました。キーには、JScriptの間で翻訳するための一対の関数があることだと思います。 Date オブジェクトとvbscript Date タイプ。 JSDateFromVB 私の例では、vbscriptから翻訳する非常に粗い関数です Date jscriptに Date.

<job id="test">
    <script language="JScript">
        if (typeof Date.prototype.prettyPrint === 'undefined')
        {
            Date.prototype.prettyPrint = function () {
                return this.getFullYear() + '-' +
                    (this.getMonth()+1) + '-' +
                    this.getDate();
            }
        }

        function makeDate(vbDate) {
            return new Date(vbDate);
        }
    </script>
    <script language="VBScript">
        Dim d
        d = DateSerial(2000, 11, 30)

        Dim js_d
        Set js_d = JSDateFromVB(d)

        WScript.Echo js_d.prettyPrint()

        Function JSDateFromVB(pDate)
            Set JSDateFromVB = makeDate(pDate)
        End Function
    </script>
</job>

他のヒント

JavaScriptの日付オブジェクトへの拡張機能がVBScriptで機能していない理由は、WSHシステムがJavaScriptオブジェクトのプロトタイプの拡張機能に気付かないためです。プロトタイプ定義は、作成したJavaScriptコード内にのみ存在します。VBScript内からアクセスしようとするとすぐに、その名前空間にインポートされたことがないため、存在しません。

ただし、通常のJavaScript関数内でプロトタイプ拡張機能を定義することにより(これはインポートされる2つのアイテムの1つです - もう1つはグローバル変数だと思います)。ただし、プロトタイプの拡張はJavaScriptの日付オブジェクトにのみ存在します - VBScriptオブジェクトを拡張することはできません。

function blargh() {
  Date.prototype.help = function() {...};
  ...
}

...次に、VBScriptで「blargh()」を呼び出します。これは、javascriptの日付オブジェクトを変更して、vbscriptに返される日付オブジェクトが「help()」サブ機能を使用できるようにします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top