Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当使用构造函数创建对象时,公共成员如何能够访问私有成员JavaScript_Javascript - Fatal编程技术网

当使用构造函数创建对象时,公共成员如何能够访问私有成员JavaScript

当使用构造函数创建对象时,公共成员如何能够访问私有成员JavaScript,javascript,Javascript,好吧,这个问题可能看起来很傻,但我正在更深入地学习javascript中的面向对象概念,所以为了避免混淆,我不得不问这个问题 const ObjConstructor = function() { this.name = 'object'; let value = 1; this.destroyValue = function() { value = 0; } this.getValue = function() {

好吧,这个问题可能看起来很傻,但我正在更深入地学习javascript中的面向对象概念,所以为了避免混淆,我不得不问这个问题

    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编程中极其重要的概念。