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
实际上不是一种方法,我不这么认为?有人可以解释这些最后一行代码中发生了什么
答案 0 :(得分: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
答案 1 :(得分:0)
john.askTeller()
返回returnBalance
,这是一个函数,然后分配给myBalanceMethod
;因此myBalanceMethod
是一个函数,可以使用()
调用(您在returnBalance
内调用john
,这是无法访问的。
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
答案 2 :(得分:0)
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;
};