在构造函数内部和外部定义公共方法之间有什么区别吗?
Is there any difference between defining public methods inside and outside constructor?
class My {
constructor() {
this.myMethod1 = function(){};
}
myMethod2() {
}
}
那么myMethod1和myMethod2之间有什么区别吗?
是的。在构造函数中定义方法会导致在首次构造对象时创建和分配函数,而在类主体中定义该方法会导致将方法添加到类的原型中。
class My {
constructor() {
this.myMethod1 = function(){};
}
myMethod2() {
}
}
console.log(My.prototype.myMethod1) //=> undefined
console.log(My.prototype.myMethod2) //=> function myMethod2() { ... }
实际上,出于性能原因以及整体可读性和语义正确性,通常最好将方法定义保留在类主体中。可能有一些边缘情况,像这样在构造函数中分配方法可能是有意义的,但根据我的经验,它们非常罕见。
有关将方法分配给原型与在构造函数中分配方法之间的技术差异的更多详细信息,请参阅在 JavaScript 中使用"原型"与"this"?
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 什么是&&在没有if的行中的变量之间
- DOM元素和angular元素之间的主要区别是什么
- 什么's本地node.js服务器和python简单http服务器之间的区别
- JSDoc:模块和名称空间之间的关系是什么
- 什么'$.get和$.ajax之间的区别是什么
- Math.min()和Math.max()之间有什么区别?在Javascript中
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- webpack开发模式和生产构建模式之间有什么区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 什么's extjs中的mon()和on()之间的区别
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- 在使用JS的Ajax调用中,ajaxComplete和beforesend之间有什么区别
- 什么's使用链接和脚本标记引用JavaScript源之间的区别
- 什么's使用脚本标记调用文件和ajax之间的区别
- $(e.target).find和template.find('input').value之间有什么区别
- 什么'“dest”和“dist”之间的区别是什么
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 在测试间谍的上下文中,存根和mock之间有什么区别?(茉莉花)
- webpack中的源映射之间有什么区别