2

我没有参加任何官方的 Javascript 课程。

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

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操作私有变量?

提前感谢解释。

4

1 回答 1

3

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

this.getBalance = balance * 0.9 ;

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

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

在以下情况下:

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

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

var fun = this.getBalance

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

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

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

于 2012-06-17T15:54:19.417 回答