2017-07-03 8 views
0

JavaScriptが新しく、機能の論理を理解しようとしています。ここで私がしようとしているもの:IIFEを使用しようとするとキャッチされないタイプエラーが発生する

var GetterSetter = (function() { 
    var balance = 0.0; 


    var getBalance = function() { 
     return balance; 
    }; 
    var setBalance = function (amount) { 
     if (amount > 0) { 
      return balance = amount; 
     } 
     }; 
})(); 

GetterSetter.setBalance(120); 

私はそれを実行しようとします。私が得た:関数の最後で

Uncaught TypeError: Cannot read property 'setBalance' of undefined at GetterSetterScript.js:16

+3

あなたの機能は** **何も返しません。そのため、エラーが発生する – hindmost

+1

メソッドとして関数を持つオブジェクトを返す必要があります。 – evolutionxbox

+2

メソッドを使うのではなく、実際にゲッターとセッターを定義することができます。 – evolutionxbox

答えて

2

あなたGetterSettersetBalanceの方法としては存在しません。

コードに関数を設定する必要があります。私はあなたのために提供している例:

コード

var GetterSetter = (function() { 
    var balance = 0.0; 
    return { 
    getBalance: function() { 
     return balance; 
    }, 
    setBalance: function (amount) { 
     if (amount > 0) { 
     return balance = amount; 
     } 
    } 
    } 
})(); 
4

使用

return { 
    getBalance:getBalance, 
    setBalance:setBalance 
} 

+4

またはES6では、単純に 'return {getBalance、setBalance}' – somethinghere

関連する問題