[Javascript] Prototype Pattern

Source: https://javascriptpatterns.vercel.app/patterns/design-patterns/prototype-pattern

 

If you use factory pattern to create object:

const createDog = (name, age) => ({
  name,
  age,
  bark() {
    console.log(`${name} is barking!`);
  },
  wagTail() {
    console.log(`${name} is wagging their tail!`);
  },
});

In memroy, it looks like this:

If you use Class:

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

  bark() {
    console.log(`${this.name} is barking!`);
  }
  wagTail() {
    console.log(`${this.name} is wagging their tail!`);
  }
}

 In memory, it looks like this:

Memory efficient: The prototype chain allows us to access properties that aren't directly defined on the object itself, we can avoid duplication of methods and properties, thus reducing the amount of memory used.

Readaibility: When a class has been extended many times, it can be difficult to know where certain properties come from.

For example, if we have a BorderCollie class that extends all the way to the Animal class, it can be difficult to trace back where certain properties came from.

One

 

Under __proto__ and .prototype.

posted @ 2022-08-26 18:09  Zhentiw  阅读(16)  评论(0编辑  收藏  举报