クロージャと実行コンテキストに問題があるとは思いますが、実際はわかりません。Javascriptのクロージャと実行コンテキスト - 呼び出されたコードの問題
は私がやろうとしている正確に何を説明しましょう、なぜ私は私が持っている方法でそれをコード化されました:
1)私はjavascriptのパワードインタフェースを構築するよ、インタフェースが異なるアプリケーションが含まれています(Iそれらをウィジェットと呼ぶ)。
2)すべてのウィジェットは、移動可能/ドラッグ可能/クローズ可能/サイズ変更可能です。私はデスクトップインターフェースのようなものを実現しようとしていますが、私が得たものは、システム。しかし、それが私が目指しているものです。
3)私はJSコードがこれらのウィジェットのそれぞれをロードする方法を必要としました。私は、インターフェイスがロードされるとき、ウィジェットの名前を見つけるためにPHPスクリプトを呼び出すべきだと決めました。
4)JSコードは各ウィジェットの名前を持ち、別のPHPスクリプトを呼び出すようになりました。このPHPスクリプトは、特定のウィジェットを読み込むためのコードとそれを表示するHTMLコードをフィードバックします。 JSは表示のために要素を画面に追加し、次にウィジェットのJSコードを読み込みます。
5)これは、実際に各ウィジェットのコードをロードし、トリッキーな部分ですが、私はこのようにそれをやった:
var func=new Function(ajax.responseText);
func();
そして、それが正常に動作し、または少なくともに表示されます。
6)オブジェクトと配列に問題があり、実行コンテキストと関係があると思います。
アレイの例:
var myArray=new Array('foo', 'bar', 'fooBar', 'barFoo');
私はこれを実行してみました実際の配列(私はそこに何かを間違って入力した場合を除き:)は、私のネットビーンズ・エディタなしで動作することはできません)には問題、私にはOKに見えません別のスクリプトとそれは正常に動作します。 :
実際alert(myArray[0]);
を呼び出すと
foo, bar, fooBar, barFoo
になりますので、私のJSコードは、この配列と便利何もできない
。これが本当に起こるが、それは本当にすべてをいじりている理由はありませんアイデア:foo
アレイ問題が生じalert(myArray[0]);
今すぐ。
オブジェクト例:
再びvar myObject=new Object();
myObject.a='foo';
myObject.b='bar';
myObject.c='fooBar';
myObject.d='barFoo';
、それは自己だで実行すると、オブジェクトが正常に動作します。
オブジェクト問題:
配列と同じように非常に類似した問題が、alert(myObject['a']);
を呼び出すと、実際に[object Object],[object Object],[object Object], [object Object]
...
になります...ので、それは配列と同じ問題ですが、それはしても、悪くなります私がalert(myObject.a);
(今度は['a']を使用しなかったことに気付く)を呼び出すと、undefined
という結果になります。だから、少し後戻りし、さらにすべてが一緒で結ばれている方法を説明するための
:
1)JSの負荷が、それは3つのキー(「機能」を含むJSONエンコードされたオブジェクトを返すPHPスクリプトを呼び出します。 、 'JSscript'、 'Other')。各キーには別のjavacriptファイルのソースコードが含まれています。これらはすべて、var func=new Function(ajax.responseText)
のような動的に作成された関数を使用してロードされます。
2)次に、これらの新しいjavascriptコードを使用して、別のPHPスクリプトを呼び出して詳細な指示を出します。
3)PHPは動的に作成された関数内で評価され、新しい変数に格納されるJSONで応答します。
4)新しい変数が3つのキーを含むオブジェクト(html, javascript, anotherObject)
htmlがドキュメントに追加されました。javscriptは上記のように新しい関数で実行されます。
5)問題は、最後のステートメントで実行されたJS内に存在するオブジェクト/配列にあります。
だから誰でも私を助けてくれればいいと思うし、詳しい説明やコード例が必要ならば、明らかに私は提供することができます。
おかげで、
リチャード
私たちはそのコードを実行することができますか? – tiagoboldt
オブジェクト/配列の作成直後に同じスコープ内で 'alert'関数を呼び出しますか?どのブラウザを使用していますか? –
このような問題はありません。例http://jsfiddle.net/NHhg4/ – Qtax