【问题标题】:Calling a function that is not defined anywhere in the code?调用代码中任何地方都没有定义的函数?
【发布时间】:2014-04-06 00:27:07
【问题描述】:
function Person(first,last,age) {
   this.firstname = first;
   this.lastname = last;
   this.age = age;
   var bankBalance = 7500;

   var returnBalance = function() {
      return bankBalance;
   };

  this.askTeller = function(){
      return returnBalance;
  }

}

var john = new Person('John','Smith',30);
console.log(john.returnBalance);
var myBalanceMethod = john.askTeller();
var myBalance = myBalanceMethod();
console.log(myBalance);

这是代码学院的一个例子。没看懂

var myBalanceMethod = john.askTeller();
var myBalance = myBalanceMethod();

我在想的是var myBalanceMethod = john.askTeller();myBalanceMethod 的值设置为returnBalance。然后我不确定var myBalance = myBalanceMethod(); 做了什么,因为myBalanceMethod 实际上不是一种方法,我不认为?有人可以解释一下最后几行代码中发生了什么

【问题讨论】:

    标签: javascript function object methods


    【解决方案1】:

    myBalanceMethod 是一个方法。

    var myBalanceMethod = john.askTeller();
    

    这一行正在设置一个引用,这很可能就是这段代码所展示的内容。 myBalanceMethod 分配给 john.askTeller() 后成为一个函数。

    为了进一步证明这一点,我可以执行以下操作:

    function addNumbers(a, b) {
         return a + b;
    }
    
    var myRefObj = addNumbers;
    
    alert(addNumbers(10,20));
    alert(myRefObj(10,20));  // same answer
    

    【讨论】:

      【解决方案2】:

      john.askTeller()返回returnBalance,这是一个函数,然后赋值给myBalanceMethod;因此myBalanceMethod 是一个函数,可以使用() 调用(您在john 中调用returnBalance,否则无法访问)。

      var myBalanceMethod = john.askTeller(); // myBalanceMethod is now a reference to returnBalance in john
      var myBalance = myBalanceMethod(); // returnBalance is executed and value (7500) assigned to myBalance
      

      【讨论】:

      • 谢谢,这是有道理的。还有一件事,当var myBalance = myBalanceMethod(); 运行时,它是否返回"bankBalance"7500 的值
      • 它返回7500并将其分配给myBalance
      【解决方案3】:
      var myBalanceMethod = john.askTeller();
      

      上面会将returnBalance方法分配给myBalanceMethod。请注意,它没有左括号和右括号 ()。意思是,它不会执行该功能,而只会分配。因此, myBalanceMethod 现在是一个函数。看下面的代码:

      this.askTeller = function(){
        return returnBalance;
      }
      

      那么,

      var myBalance = myBalanceMethod();
      

      myBalance 被分配了由 myBalanceMethod() 返回的值。注意 (),所以它执行函数。在您的 Person 构造函数中,它返回的 BankBalance 为 7500。因此,myBalance 被分配了 7500 的值。

      var returnBalance = function() {
        return bankBalance;
      

      };

      【讨论】:

        猜你喜欢
        • 2017-03-29
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-16
        • 2011-05-28
        相关资源
        最近更新 更多