Javascript вызов частного метода с ()() - круглые скобки после круглых скобок

Я играл с закрытыми методами и случайно обнаружил, что могу вызвать метод, который вызывает закрытый метод, используя () () - двойные скобки вместо того, чтобы назначать его переменным пару раз.

Вот мой код, чтобы сделать его более понятным:

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


Итак, допустим ли синтаксис - () ()?

1 ответ

Решение

Да, это - john.askTeller() возвращает функцию returnBalance что вы затем вызываете с (),

returnBalance это функция, ограниченная Person функцияконструктора, но она становится доступной за пределами этой области, когда она возвращается из askTeller вызов функции.

Другие вопросы по тегам