0

メインページに次のようなJavaScriptがあります:それは変数を定義するだけです

test1 = function(){
var bla= "bla";
}

私のiFrameには、次のようなアラートのみを生成する別のJavaScriptがあります

alert(parent.test1.bl);

残念ながら、アラートウィンドウは表示されますが、コンテンツには「未定義」と表示されます。親ウィンドウの関数内から変数を読み取るにはどうすればよいですか?

面白いのは、親ウィンドウでアラートを実行し、iFrame内から関数のみを呼び出すと、アラートボックスがポップアップし、メッセージが含まれることです。しかし、親から変数を読み取ることはできないようです。

4

1 に答える 1

3

関数にはプロパティがなく、オブジェクトにはプロパティがあります。したがってtest1()、そのプロパティを使用する前にインスタンス化する必要があります。

test1 = function(){
    var bla= "bla";
    this.bl ="notbla";
}

alert(new test1().bl);

ここでキーワードが使用されていることに注意してthisください。これは、新しく作成されたオブジェクトを参照しbl、関数の外部で読み取ることができるプロパティを作成します。blaで宣言されたものは、のような別のプロパティを作成しない限り、varの外では見ることができませんtest1()this.bl = bla;

あなたの質問の「面白い部分」は本当に不明確です、それがどこで呼び出されても、間違いなくあなたはあなたalert()が示すでしょう。undefined

MDNの関数オブジェクト。

于 2012-12-21T17:54:17.610 に答える