Javascript 尝试使用iLife时出现未捕获类型错误

Javascript 尝试使用iLife时出现未捕获类型错误,javascript,iife,Javascript,Iife,我是JavaScript新手,我试图理解函数的逻辑。以下是我尝试做的: var GetterSetter = (function () { var balance = 0.0; var getBalance = function () { return balance; }; var setBalance = function (amount) { if (amount > 0) { return b

我是JavaScript新手,我试图理解函数的逻辑。以下是我尝试做的:

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);
当我试着运行时。我得到:

未捕获的TypeError:无法读取未定义的属性“setBalance” 在GetterSetterScript.js:16

使用

在函数结束时

使用


在函数的末尾

您的
GetterSetter
不作为
setBalance
的方法存在

您需要在代码中设置函数。我为您提供了以下信息和示例:

代码

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

您的
GetterSetter
不作为
setBalance
的方法存在

您需要在代码中设置函数。我为您提供了以下信息和示例:

代码

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

您的函数不返回任何内容。这就是为什么你们会得到错误,你们需要用函数作为方法返回一个对象。你们实际上可以定义真正的getter和setter,而不是使用方法。你们的函数什么也不返回。这就是为什么会出现错误。您需要返回一个带有函数作为方法的对象。您实际上可以定义真正的getter和setter,而不是使用方法。或者在ES6中,只需
return{getBalance,setBalance}
或者在ES6中,只需
return{getBalance,setBalance}