在构造函数内部和外部定义公共方法之间有什么区别吗?

Is there any difference between defining public methods inside and outside constructor?

本文关键字:之间 什么 区别 方法 内部 构造函数 外部 定义      更新时间:2023-09-26
class My {
  constructor() {
    this.myMethod1 = function(){};
  }
  myMethod2() {
  }
}

那么myMethod1myMethod2之间有什么区别吗?

是的。在构造函数中定义方法会导致在首次构造对象时创建和分配函数,而在类主体中定义该方法会导致将方法添加到类的原型中。

class My {
  constructor() {
    this.myMethod1 = function(){};
  }
  myMethod2() {
  }
}
console.log(My.prototype.myMethod1) //=> undefined
console.log(My.prototype.myMethod2) //=> function myMethod2() { ... }
实际上,出于

性能原因以及整体可读性和语义正确性,通常最好将方法定义保留在类主体中。可能有一些边缘情况,像这样在构造函数中分配方法可能是有意义的,但根据我的经验,它们非常罕见。

有关将方法分配给原型与在

构造函数中分配方法之间的技术差异的更多详细信息,请参阅在 JavaScript 中使用"原型"与"this"?