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声明 withvar不能在 之外看到test1(),除非您不会创建另一个属性,例如this.bl = bla;

您问题的“有趣部分”确实不清楚,无论在哪里调用,您都肯定alert()会显示。undefined

MDN 上的函数对象

于 2012-12-21T17:54:17.610 回答