gpt4 book ai didi

javascript - 私有(private)方法使用或不使用函数的困惑

转载 作者:行者123 更新时间:2023-11-29 20:08:47 25 4
gpt4 key购买 nike

我没有参加任何官方的 Javascript 类(class)。

我经常在教程中读到这个:

function Bank(name) {
this.name = name;
var balance = 100;

// *my question here* method to access balance
this.getBalance = function() {
return balance * 0.9 ;
};
}

var myBank = new Bank("My Bank");
console.log( myBank.getBalance() );

为什么开发人员使用 getBalance() 而不是 getBalance?

我认为“getBalance”更容易阅读,但没有教程使用它:

// *my question here* method to access balance
this.getBalance = balance * 0.9 ;

然后

console.log( myBank.getBalance );

我没有看到任何使用上述样式编写的教程,即使它更简单。所以:

两种代码风格有什么不同吗?避免.getBalance操作私有(private)变量有什么顾虑吗?

在此先感谢您的解释。

最佳答案

您必须了解变量、函数和函数调用之间的区别。这是可变的:

this.getBalance = balance * 0.9 ;

getBalance 变量的值在代码执行时计算一次。每次访问 getBalance(不带括号)时,都会返回之前计算的值。

使用getBalance 变量有一个重要的含义。如果您将来修改基础 balance 变量,getBalance 将不会反射(reflect)该更改,因为它是使用旧的 balance 值计算的。

在下面的例子中:

this.getBalance = function() {
return balance * 0.9 ;
};

getBalance 也是一个变量,但它指向一个函数,而不是一个简单的值。如果你像访问变量一样访问它,你会得到一个函数引用:

var fun = this.getBalance

您现在可以使用 fun() 调用该函数,但是 fun 引用本身(与 this.getBalance 相同)不是很好对你有用。

当然,您可以使用 this.getBalance() 调用该函数。语义差异如下:每次调用 getBalance() 时,都会执行函数体。这意味着 balance 的值被再次读取并且 getBalance() 返回值始终是最新的。

如您所见,为变量分配函数与为变量分配简单值(如数字)之间存在巨大差异。根据您选择的方法,它会产生不同的影响。您必须了解 JavaScript 的函数式方面,才能充分利用它的强大功能。

关于javascript - 私有(private)方法使用或不使用函数的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072643/

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