当使用构造函数创建对象时,公共成员如何能够访问私有成员JavaScript
好吧,这个问题可能看起来很傻,但我正在更深入地学习javascript中的面向对象概念,所以为了避免混淆,我不得不问这个问题当使用构造函数创建对象时,公共成员如何能够访问私有成员JavaScript,javascript,Javascript,好吧,这个问题可能看起来很傻,但我正在更深入地学习javascript中的面向对象概念,所以为了避免混淆,我不得不问这个问题 const ObjConstructor = function() { this.name = 'object'; let value = 1; this.destroyValue = function() { value = 0; } this.getValue = function() {
const ObjConstructor = function() {
this.name = 'object';
let value = 1;
this.destroyValue = function() {
value = 0;
}
this.getValue = function() {
return value;
}
}
上面的代码实现了一个对象构造函数,它有一个私有成员值
。我假设每次使用此构造函数创建对象时,它都会调用ObjConstructor
对象上的call()
方法,并返回分配了成员(在本例中是name、destroyValue和getValue)的对象
但是当我理解
destroyValue
和getValue
方法如何能够访问这里的私有变量value
时,我感到非常困惑。因为它不是当前对象的成员,所以调用了这些方法,并且在第一次执行构造函数来创建对象后,构造函数的局部变量value
被销毁。在您的示例中value
是一个全局变量,而不是私有变量;没有let
或var
或const
声明。@Pointy抱歉,这是一个错误,值应该按方式声明无论如何答案是value
在调用构造函数创建的闭包中。@Pointy抱歉,我仍然没有得到这个-和。闭包是JavaScript编程中极其重要的概念。