Итак, ES6 - это очень весело. Он приносит вам синтаксический сахар и новые функции, такие как генераторы и т. Д. Это не история о новых функциях ES6, а о его хитростях.

Сегодня я узнал трюк, которым хочу поделиться с вами, ребята. Уловка проста и может пригодиться некоторым людям. Итак, начнем.

Допустим, вы определяете класс PersonHidden и хотите скрыть его реализацию, когда кто-то выполнит console.log (new PersonHidden (‘Alex’)); Почему? Поскольку у вас есть некоторые внутренние переменные, которые вы не хотите, чтобы другие разработчики видели, например (_name, _dbConnection и т. Д.);

Чтобы скрыть вывод класса для console.log или, лучше сказать, изменить вывод класса, вы можете реализовать специальную общедоступную функцию в своей реализации класса inspect:

class PersonHidden {
    constructor(name) {
        this.name = name;
    }

    inspect() {
        return 'Ha! Hell no!';
    }
};
class Person {
    constructor(name) {
        this.name = name;
    }
};

так что теперь выполнение этого кода дает следующий результат:

let personHidden = new PersonHidden('Alex');
let person = new Person('Alex');
console.log(person); // outputs { name: 'Alex' }
console.log(personHidden); // outputs 'Ha! Hell no!'

По сути, я предполагаю, что console.log внутренне вызывает функцию inspect, которая перезаписывается реализацией класса.

Прокомментируйте, в каких случаях это можно использовать.