1

我正在使用私有方法,但我无意中发现,我可以调用一个方法,该方法使用 ()() 调用私有方法 - 双括号而不是将其分配给变量几次。

这是我的代码,使其更清晰:

function Person(name, age) {
    this.name = name;
    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); // undefined

var myBalanceMethod = john.askTeller();
var myBalance = myBalanceMethod();
console.log(myBalance); // 7500

console.log(john.askTeller()()); // 7500 (same result but one line instead of three


那么, - ()() 语法是否有效?

4

1 回答 1

3

是的 -john.askTeller()返回returnBalance您随后调用的函数()

returnBalance是一个作用域为Person 构造函数的函数,但当它从askTeller函数调用返回时,它在此作用域之外可用。

于 2013-10-30T22:54:16.740 回答