JavaScript范围和面向对象

时间:2010-11-20 20:44:01

标签: javascript scope

这有什么问题 - 如何在foo对象的onModified()内定义变量Document

function Document() {

    var foo = "dfsadf";

    this.onModified = function() {
        alert(foo);
    };

}

// Does not alert; "foo" doesn't resolve
new Document().onModified();

我想在Document上使用公共方法来引用Document以某种方式私有的变量。

1 个答案:

答案 0 :(得分:7)

您的Document函数与DOM中的Document构造函数发生冲突。

document instanceof Document; // true

与任何host-object一样,它的行为完全取决于主机环境,它们通常会给您带来意想不到的结果。

到目前为止,我已经测试过,在Firefox上你无法替换它的值,因此我建议你去重命名你的功能,或者< em>在其他范围内声明。