0
点赞
收藏
分享

微信扫一扫

8.前端设计模式之混合模式

Maxin Pattern: Add functionality to objects or classes without inheritance

在不使用的继承的情况下为对象或者类添加功能

在JavaScript中混合也是通过原型链实现的。

比如有个Dog类:

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

现在我们希望为Dog类添加bark、wagTail、play方法

const dogFunctionality = {
  bark: () => console.log("Woof!"),
  wagTail: () => console.log("Wagging my tail!"),
  play: () => console.log("Playing!"),
};

在不直接修改Dog类避免使用继承的情况下,我们可以修改Dog类的原型:

Object.assign(Dog.prototype, dogFunctionality);

这样所有的dog示例都有了bark、wagTail、paly方法:

const dog = new Dog("Daisy");
dog.name; // Daisy
dog.bark(); // Woof!
dog.play(); // Playing!


举报

相关推荐

0 条评论