可以在node.js原型定义的函数中访问私有变量吗?

时间:2013-08-02 06:47:39

标签: javascript node.js asynchronous private member

请考虑以下代码段:

function C1() {
    // private variable in the constructor
    a = 1;
}

C1.prototype.f1 = function() {
console.log( "a=" +  a );
}

C1.prototype.f2 = function() {
    a = 2;
    process.nextTick( this.f1 );
}

o = new C1();
o.f1();
o.f2();

观察到的输出是:

a=1
a=2

我认为私有变量在构造函数之外是不可访问的?

1 个答案:

答案 0 :(得分:1)

在JavaScript中,没有“var”关键字声明的变量具有全局范围。在浏览器中,这是通过将变量附加到窗口对象(不确定它在Node中如何工作)来实现的。如果您希望对象可以访问私有变量,请尝试围绕对象构造函数和原型声明的闭包。