最近发现有的地方在使用ES6的class时,使用箭头函数来声明方法,例如
1 | class Test { |
这两种方案是有区别的,区别就是func1是protoType上的属性,而func2是实例上的属性,我们用console.dir(t)在chrome dev tool上一看就知道了。根据prototype的原理,func1对于所有的实例只有一份,func2对每个实例都有一份。
所以对于需要bind的函数,例如要用在闭包里,那使用箭头函数或者bind没有区别,bind也会生成一个新的函数对象赋给this。但如果是不需要bind的函数,写成箭头函数就会造成内存浪费了,应该避免。
对于属性property,在constructor内声明还是在类中声明则没有区别,两者都是实例属性。
Ursprünglicher Link: http://yangguang1029.github.io/2018/08/29/js-class-function/
Copyright-Erklärung: 转载请注明出处.