Итак, 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, которая перезаписывается реализацией класса.
Прокомментируйте, в каких случаях это можно использовать.