Ste*_*rov 2 javascript ecmascript-6
class My {
constructor() {
this.myMethod1 = function(){};
}
myMethod2() {
}
}
Run Code Online (Sandbox Code Playgroud)
那么myMethod1和myMethod2之间有什么区别吗?
Aje*_*i32 10
是.在构造函数内定义方法会导致在首次构造对象时创建和分配函数,而在类体中定义它会导致将方法添加到类的原型中.
class My {
constructor() {
this.myMethod1 = function(){};
}
myMethod2() {
}
}
console.log(My.prototype.myMethod1) //=> undefined
console.log(My.prototype.myMethod2) //=> function myMethod2() { ... }
Run Code Online (Sandbox Code Playgroud)
实际上,出于性能原因和整体可读性以及语义正确性,通常最好将方法定义保留在类体中.可能存在一些边缘情况,在构造函数中分配方法可能是有意义的,但根据我的经验,它们非常罕见.
有关在原型和构造函数中分配方法之间技术差异的更多详细信息,请参阅在JavaScript中使用'prototype'与'this'?