gpt4 book ai didi

javascript - 为什么 JavaScript 中的静态私有(private)变量是静态的?

转载 作者:行者123 更新时间:2023-11-30 15:35:55 25 4
gpt4 key购买 nike

我正在阅读 Nicholas C. Zakas 的 JavaScript for Web Developers Third Edition(旧的,我知道),但我无法理解为什么静态私有(private)变量/函数首先是静态的。我知道如果我声明一个带有私有(private)变量/函数的构造函数,它的所有实例都会有自己的私有(private)变量/函数,就像 Zakas 的一个例子一样:

function MyObject(){

//private variables and functions
var privateVariable = 10;

function privateFunction(){
return false;
}

//privileged methods
this.publicMethod = function (){
privateVariable++;
return privateFunction();
};
}

那么将私有(private)变量/函数放在私有(private)范围内如何使变量成为静态变量呢?仅仅是因为它们被封闭在私有(private)范围内,还是我忽略了什么?这是 Zakas 关于静态私有(private)变量的示例之一:

(function(){

//private variables and functions
var privateVariable = 10;

function privateFunction(){
return false;
}

//constructor
MyObject = function(){
};

//public and privileged methods
MyObject.prototype.publicMethod = function(){
privateVariable++;
return privateFunction();
};
})();

最佳答案

在您的第一个示例中,每次调用 MyObject 时都会创建一个新的局部变量 privateVariable

在您的第二个示例中,privateVariablefunction(){ ... } 的一部分,它只被调用一次,因此只会创建一个变量。此变量由 MyObject.prototype.publicMethod 使用,然后由通过 MyObject 创建的所有对象共享。

关于javascript - 为什么 JavaScript 中的静态私有(private)变量是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41542704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com