JavaScript范围和面向对象

Agi*_*ble 0 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();
Run Code Online (Sandbox Code Playgroud)

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

CMS*_*CMS 7

您的Document函数与DocumentDOM中的构造函数冲突.

document instanceof Document; // true
Run Code Online (Sandbox Code Playgroud)

正如任何主机对象其行为完全依赖于主机环境,他们往往可以给你意想不到的效果.

据我测试,在Firefox你是不是能够取代它的价值,因此,我建议你要么,重命名功能,或者,声明它在其他范围.