繁体   English   中英

在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.athis.b ,这这这......?

它背后的技术原因是什么,好处是什么,它现在是否会改变-是否有计划?

嗯,从根本上讲,JavaScript没有基于类的继承。 它具有基于原型的继承以及一些语法糖,可以模仿基于类的继承。

更一般而言,尝试确定a()表示this.a()还是表示存在于当前函数可以访问的范围内的另一个a() ,存在严重的性能问题。 而且这甚至可能在每次调用b()时发生变化!

请记住,在JavaScript中,仅仅因为一个对象现在具有方法a()并不意味着它以后仍将具有该方法a() 您可以从对象中删除方法,也可以向对象添加新方法。

试图确定哪个函数是调用的目标,基本上会具有with现在不建议使用的性能问题完全相同的性能问题—因为您无法确定要调用哪种方法,因此无法进行大量优化在您尝试这样做的那一刻。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM