class My {
constructor() {
this.myMethod1 = function(){};
}
myMethod2() {
}
}
myMethod1 和 myMethod2 之间有什么区别吗?
答案 0 :(得分:10)
是。在构造函数中定义方法会导致在首次构造对象时创建并分配函数,而在类体中定义它会导致将方法添加到类&# 39; s原型。
class My {
constructor() {
this.myMethod1 = function(){};
}
myMethod2() {
}
}
console.log(My.prototype.myMethod1) //=> undefined
console.log(My.prototype.myMethod2) //=> function myMethod2() { ... }
实际上,出于性能原因和整体可读性以及语义正确性,通常最好将方法定义保留在类体中。可能存在一些边缘情况,在构造函数中分配方法可能是有意义的,但根据我的经验,它们非常罕见。
有关为原型分配方法与构造函数之间的技术差异的更多详细信息,请参阅Use of 'prototype' vs. 'this' in JavaScript?