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

Private variable accessible in node.js prototype-defined function?

本文关键字:访问 变量 js 原型 定义 函数 node      更新时间:2023-09-26

考虑以下代码片段:

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

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

在JavaScript中,不使用"var"关键字声明的变量具有全局作用域。在浏览器中,这是通过将变量附加到窗口对象来实现的(不确定它在节点中的工作方式)。如果您想要对象可访问的私有变量,请尝试在对象构造函数和原型声明周围使用闭包。