私はWindows Script Host VBScriptを使って遊んでいますが、VBScriptがJScriptのようなプロパティを追加/削除できるかどうか不思議です。例えばVBScriptはJScriptのようなオブジェクトにプロパティを追加できますか?
:
var global = this;
var test = function() {
if ('greeting' in global) {
WScript.echo (
'global has property named greeting with value: ' +
global.greeting +
'.'
);
} else {
WScript.echo('global has no property named greeting.');
}
};
test();
global.greeting = 'Hello, World!';
test();
delete global.greeting;
test();
このコードは、グローバルスコープを決定します(JScriptのは、Node.jsの中のブラウザでウィンドウやグローバルなどグローバルスコープへの最初のアクセスを持っていないので、私はそれを自分自身を見つける必要があります)。
test()
関数は、グローバルオブジェクトに "greeting"という名前のキーがあるかどうかをチェックし、現在の状態を出力として報告します。
グローバルオブジェクトにグリーティングキーがないことを示す初期テストを行い、次にグリーティングプロパティを設定してからグリーティングキーがグローバルオブジェクトに追加されたことを示す2番目のテストを行います。この後、グリーティング・プロパティーが削除され、キーがグローバル・オブジェクトの一部ではないことを示す第3のテストが実行されます。
これはVBScriptで複製できますか?
私はVBScriptにこのような情報を保存するために使用できるオブジェクトがあることを知っていますが、VBScriptで既存のオブジェクトをフックしてそのようなプロパティを削除する方法があるかどうか、またはVBScriptにJScript {}
Scripting.Dictionary
またはクラス(プロパティは不変です)以外の構造体。
それは理にかなっている。 VBScriptはsimulaのようなオブジェクトモデルを使用し、JScriptはsmalltalkのようなオブジェクトモデルを使用します。 VBScriptオブジェクトは厳密なインターフェイスを持ち、プロトタイプはありません。 JScriptオブジェクトは辞書であり、JScriptは関数を動詞として扱わないため、自然にマップに追加することができますが、vbscriptの変数に関数/サブを代入するのは奇妙です(新しいVBでは代理人がいますが、 JScriptはコールバックとして渡す関数の入出力については気にしません)。 – Dmitry
まともな説明。 – Lankymart