• 委托

    委托

    在继承部分,我们研究了扩展类功能的一种方法,另一种方法是使用委托来扩展功能。 使用委托,一个对象将包含对不同对象的引用,它将切换执行功能的请求。
    下面的代码显示如何使用委派与Bird类和Penguin 类。 Penguin类有一个对Bird类的引用,它将对自己的walk方法的调用委派给Bird的walk方法。

    1. // ES6
    2. class Bird {
    3. constructor(weight, height) {
    4. this.weight = weight;
    5. this.height = height;
    6. }
    7. walk() {
    8. console.log('walk!');
    9. }
    10. }
    11. class Penguin {
    12. constructor(bird) {
    13. this.bird = bird;
    14. }
    15. walk() {
    16. this.bird.walk();
    17. }
    18. swim() {
    19. console.log('swim!');
    20. }
    21. }
    22. const bird = new Bird(...);
    23. const penguin = new Penguin(bird);
    24. penguin.walk(); //walk!
    25. penguin.swim(); //swim!

    关于“行为委派”的良好讨论可以在 这里找到。