![](/img/trans.png)
[英]Is there a way to refer to class methods and variables without using 'this' (ES6)?
[英]In ES6 why can't you refer to sibling methods without using this?
我认为大多数语言都不能使用。
class Test {
a() {
console.log('hi');
}
b() {
a();
}
}
在Java或Ruby中,这将起作用。 从b调用a完全可以..但是在Javascript类中。 为什么我需要把this.a
, this.b
,这这这......?
它背后的技术原因是什么,好处是什么,它现在是否会改变-是否有计划?
嗯,从根本上讲,JavaScript没有基于类的继承。 它具有基于原型的继承以及一些语法糖,可以模仿基于类的继承。
更一般而言,尝试确定a()
表示this.a()
还是表示存在于当前函数可以访问的范围内的另一个a()
,存在严重的性能问题。 而且这甚至可能在每次调用b()
时发生变化!
请记住,在JavaScript中,仅仅因为一个对象现在具有方法a()
并不意味着它以后仍将具有该方法a()
。 您可以从对象中删除方法,也可以向对象添加新方法。
试图确定哪个函数是调用的目标,基本上会具有with
现在不建议使用的性能问题完全相同的性能问题—因为您无法确定要调用哪种方法,因此无法进行大量优化在您尝试这样做的那一刻。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.