いちいちソースロードのスクリプトを書く(つーかコピペなんだけどね)のがめんどくさくなってきたので、.wsfに手を出してみたが、よくわからないことに。
まぁ、例によってprototype.jsを使いたいのでその検証とかしていたのだが、Object.extend(this, {})でグローバルに追加したメソッドを呼び出すと異常終了するという不可解な現象に出くわした。
こんなヤツ。
<?xml version="1.0" standalone="yes"?> <job id="testJob"> <script language="JScript"> Object.extend = function(dest, src) { for(var prop in src) dest[prop] = src[prop]; return dest; } Object.extend( this, { testMethod : function() { return "test"; } } ); // ↓ ここで落ちる。正確にはtestMethodの呼び出し時。 WScript.Echo( this.testMethod() ); </script> </job>
検証用にprototype.jsは使わずにObject.extendのみ定義してやっているが、このコードを実行すると
問題が発生したため、Microsoft (r) Windows Based Script Host を 終了します。ご不便をおかけして申し訳ありません。 とでて落っこちる。なかなか非道い話だ。ためしにObject.extendを使用せずにvar testMethod =〜と改良してみた。
<?xml version="1.0" standalone="yes"?> <job id="testJob"> <script language="JScript"> Object.extend = function(dest, src) { for(var prop in src) dest[prop] = src[prop]; return dest; } var testMethod = function() { return "test"; }; WScript.Echo( this.testMethod() ); </script> </job>これではコケない。なんで??
ひょっとすると環境依存とかあるのかも知れないのでちょっと調べてみよう。
セコメントをする