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 );

上記のスタイルを使用して作成するチュートリアルは見当たりませんでした。そう:

2 つのスタイルのコードに違いはありますか? .getBalanceプライベート変数を操作するために避けるべき懸念はありますか?

事前に説明していただきありがとうございます。

4

1 に答える 1

3

変数、関数、関数呼び出しの違いを理解する必要があります。これは変数です:

this.getBalance = balance * 0.9 ;

変数の値はgetBalance、コードの実行時に 1 回計算されます。(括弧なしで)アクセスするたび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 の機能を十分に活用するには、JavaScript の機能面について学ぶ必要があります。

于 2012-06-17T15:54:19.417 に答える