我的主页上有如下的javascript:它只是定义了一个变量
test1 = function(){
var bla= "bla";
}
在我的iFrame中,我有另一个javascript,它只会产生类似下面的警告
alert(parent.test1.bl);
不幸的是,会出现警告窗口,但内容显示为“未定义”。如何从父窗口的函数中读取变量?
有趣的是,如果我在父窗口执行警报并仅从iFrame中调用该函数,则会弹出警告框并包含消息。但似乎无法从父级读取变量。
答案 0 :(得分:3)
函数没有属性,对象有。因此,在尝试使用其属性之前,您需要实例化test1()
。
test1 = function(){
var bla= "bla";
this.bl ="notbla";
}
alert(new test1().bl);
注意这里使用关键字this
,它引用新创建的对象,并使bl
成为可以在函数外部读取的属性。 bla
以外var
声明的test1()
在this.bl = bla;
之外无法看到,除非您不会创建其他属性,例如alert()
您问题的“有趣部分”确实不清楚,无论调用的位置如何,您的undefined
都会显示{{1}}。