0

Javascript ブロックを抽出してマージ、縮小、および非同期で実行する PHP フレームワークを作成しています。

だから私はJavascriptコードの実行を遅らせるのが好きです.

MyLib.then(function(){
//orignial code from the templates....
}

ラップされたコードがグローバル変数を作成する必要がない限り、これは正常に機能します (私はラップされたコードの作成者ではないため、そのコードを修正したくありません) 代わりに、そのコードをグローバル実行コンテキストで実行したいと考えています。

例えば:

//excample code not within my controle  
var global="Hello World";

次のようになります。

MyLib.then(function(){
   //excample code not within my controle  
   var global="Hello World";
}

現在の解決策は、JavaScriptを文字列に入れてから

MyLib.then(function(){
     $.globalEval("var global=\"Hello World\"";");
}

または私のライブラリ内のglobalEval呼び出しで

MyLib.then("var global=\"Hello World\"";")

しかし、フレームワークのユーザーにとってデバッグが容易な、より読みやすいバージョンに固執したいと思います。

MyLib.then(function(){
   var global="Hello World";
}

callback.call(window) などを使用してライブラリ内の実行コンテキストを変更することは可能ですか?

4

2 に答える 2

0

グローバル コンテキストで変数を宣言し、スコープで初期化することもできます。

var globalVariable;
MyLib.then(function(){
    globalVariable = "a value";
});

コードがスコープ内で既に実行されている場合は、次のように進めることができます。

(function(global){
    // my logic
    global.myVar = "a value";
})(this);
于 2015-10-20T10:46:44.977 に答える
0

ええ。ウィンドウ/ドキュメント オブジェクトに追加できます。

例えば:window.var = "Hello"

window オブジェクトを使用すると、どこからでもアクセスできます。独自のグローバル オブジェクトを作成することもできます。

于 2015-10-20T10:44:25.077 に答える