[英]Calling a function that is not defined anywhere in the code?
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
的值myBalanceMethod
为returnBalance
。 然后我不确定, var myBalance = myBalanceMethod();
是因为myBalanceMethod
实际上不是一种方法,我不认为吗? 有人可以解释一下这些最后几行代码的内容吗
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
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 myBalanceMethod = john.askTeller();
上面将把returnBalance方法分配给myBalanceMethod。 请注意,它没有打开和关闭括号()。 意思是,它不会执行功能,只会分配。 因此,myBalanceMethod现在是一个函数。 看下面的代码:
this.askTeller = function(){
return returnBalance;
}
然后,
var myBalance = myBalanceMethod();
给myBalance分配了myBalanceMethod()返回的值。 注意(),因此它执行函数。 在您的Person构造函数中,它将返回7500的BankBalance。因此,为myBalance分配了7500的值。
var returnBalance = function() {
return bankBalance;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.