![](/img/trans.png)
[英]Private Method in Module Pattern: TypeError: undefined is not a function
[英]Private method and normal function in a module
考虑到我有以下模块:
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;
如您所见, 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;
如果我这样做,每次我new
Rectangle
类时,都不会再次创建该area
,因此我的Rectangle
对象将比具有private
方法的对象更轻量级。 我对么? 我应该这样做还是坚持原来的 OOP 方式?
这不会改变对象的重量,因为它在对象原型上。 但是如果这个方法不依赖于类属性,那么它应该/可以是静态的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.