模块中的私有方法和普通函数

Trí*_*han 0 javascript oop methods performance typescript

考虑到我有以下模块:

class Rectangle {
  private width: number;
  private height: number;

  constructor(w: number, h: number) {
    this.width = w;
    this.height = h;
  }

  private area(): number {
    return w * h;
  }

  public show(): void {
    console.log(`${w} X ${h} = ${this.area()}`);
  }
}

export default Rectangle;
Run Code Online (Sandbox Code Playgroud)

如您所见,该area方法设置为private,因此我可以将其移出类并将其转换为普通函数。因为我不导出它,无法从外部代码访问它。

const area = (w: number, h: number): number => w * h;

class Rectangle {
  private width: number;
  private height: number;

  constructor(w: number, h: number) {
    this.width = w;
    this.height = h;
  }

  public show(): void {
    console.log(`${w} X ${h} = ${area(this.width, this.height)}`);
  }
}

export default Rectangle;
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我每次newRectangle课堂上,area将不会再次创建,所以我的Rectangle目标会比它有一个更轻量级的private方法。我对么?我应该这样做还是坚持原来的 OOP 方式?

Pal*_*leo 5

如果我这样做,我每次newRectangle课堂上,area将不会再次创建,所以我的Rectangle目标会比它有一个更轻量级的private方法。我对么?

不,你不是。类的方法存储实例原型中。它不是存储在每个实例中。对性能或内存没有影响。

我应该这样做还是坚持原来的 OOP 方式?

我个人更喜欢在类之外声明独立的函数。这是一种功能方法。但这是编码风格的问题。

注意:如果你坚持 OOP 范式,当一个方法不使用this它应该是static.