【问题标题】:Private variable accessible in node.js prototype-defined function?在 node.js 原型定义的函数中可访问的私有变量?
【发布时间】:2013-08-03 08:14:02
【问题描述】:

考虑以下代码sn-p:

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

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

【问题讨论】:

标签: javascript node.js asynchronous private member


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 2018-07-31
    • 2011-12-08
    • 2013-08-02
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多