2017-07-03 6 views
0

Ich bin neu bei JavaScript und ich versuche, die Logik der Funktionen zu verstehen. Hier ist, was ich versuche zu tun:Uncaught TypeError beim Versuch, IIFE zu verwenden

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

Wenn ich versuche, das zu laufen. Ich habe:

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

+3

Ihre Funktion gibt ** nichts **. Deshalb erhalten Sie einen Fehler – hindmost

+1

Sie müssen ein Objekt mit den Funktionen als Methoden zurückgeben. – evolutionxbox

+2

Sie könnten tatsächlich echte Getter und Setter definieren, anstatt Methoden zu verwenden. – evolutionxbox

Antwort

2

Ihre GetterSetter nicht als Methode der setBalance existieren.

Sie müssen die Funktion in Ihrem Code festlegen. Ich habe zur Verfügung gestellt und als Beispiel für Sie:

Code

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

Verwendung

return { 
    getBalance:getBalance, 
    setBalance:setBalance 
} 

am Ende der Funktion

+4

Oder in ES6 einfach 'return {getBalance, setBalance}' – somethinghere

Verwandte Themen