Затенение в специальной концепции в JavaScript, которая позволяет переопределить методы, принадлежащие родительскому классу, в дочернем классе.
Давайте рассмотрим две любимые игры 21-го века, о которых довольно легко догадаться: GTA и Red Dead Redemption, если только вы не являетесь поклонником фейерверков с открытым миром.
Вернемся к нашей теме: я отдам GTA роль родительского класса, а RDR займет место дочернего класса.
class GTA { constructor() { this.openWorld = {}; } addFeature(feature, value) { this.openWorld[feature] = value; return this.openWorld[feature]; } } class RDR extends GTA { addFeature(feature) { super.addFeature(feature, true); // Calls the parent class' method and adds the feature return true; } } var role = new RDR(); console.log(role.addFeature('ROLE_PLAYER')); // This will return true console.log(role.openWorld); // This will now have 'ROLE_PLAYER' added to it with value true
super.addFeature(feature, true) вызывает метод addFeature в классе GTA, добавляя функцию к объекту openWorld.
Метод addFeature в RDR возвращает true, но он также гарантирует, что ROLE_PLAYER будет добавлен к объекту openWorld.
Похоже, ROLE_PLAYER только что въехал в дикий открытый мир со значением true. Надеюсь, они готовы к ошибкам, с которыми столкнутся — в конце концов, это игра с открытым миром!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3