当我们在类中声明方法时,有什么区别
class Foo {
...
doSomething(){
...
}
}
还是直接进入类原型?
class Foo {
...
}
Foo.prototype.doSomething = function(){
...
}
答案 0 :(得分:2)
主要区别在于,一种样式可读,另一种则不是:-)对于所有正常用途,它们的行为相同。
但是,它们在细节上确实有所不同:
select * from user_source where upper(text) like '%SYS_C007013%';
.name
有一个function
并且可以构造,定义的方法没有.prototype
关键字答案 1 :(得分:0)
在class
定义中定义为方法时,存在一些限制:
使用.prototype.doSomething =
表示法时,这些限制不适用。
较新的field declaration feature也不具有这些限制(实验性的,在撰写本文时处于第3阶段):
可以将箭头功能分配给这样的字段,即function
。在后一种情况下,该函数可以用作构造函数。
但是,分配给实例字段的函数不是 prototype 方法,而是实例成员,因此它并不完全与您使用.prototype
替代方法对应在您的问题中。
答案 2 :(得分:0)
如果您查看class
转换为ES <6的代码,您会发现它与quite different类似。
简而言之,将执行此操作(伪代码):
Object.defineProperty(Foo.prototype, 'doSomething', doSomething)