Javascript es6方法内部和外部构造函数-淘汰

Javascript es6方法内部和外部构造函数-淘汰,javascript,knockout.js,ecmascript-6,Javascript,Knockout.js,Ecmascript 6,考虑到es6中的以下等级: class Test { constructor() { this.foo = () => console.log('Hello World'); } bar() { console.log('Hello World') } } foo和bar的区别是什么?我可以通过这个(this.foo,this.bar)调用这两个函数。但是,如果我在knockoutJS中使用此语法,Knockout将无法找到bar() 我不知道这是否有意

考虑到es6中的以下等级:

class Test {
  constructor() {
    this.foo = () => console.log('Hello World');
  }

  bar() {
    console.log('Hello World')
  }
}
foo和bar的区别是什么?我可以通过这个(this.foo,this.bar)调用这两个函数。但是,如果我在knockoutJS中使用此语法,Knockout将无法找到bar()

我不知道这是否有意义,但我希望您能看到
Test2
中的内容。主要是,我想在我的淘汰应用程序中加入覆盖功能。如果我从
Test1
扩展并覆盖
foo
,我将无法调用
super.foo()

我的目标是启用类继承,同时允许重写专门分配给“this”的函数(例如,attached/dispose)

编辑:作为一种解决方法,我可以如下处理:

class Test3 {
  constructor() {
    this.foo = () => _foo();
  }

  _foo() {
    console.log('Hello World')
  }
}
这将允许我在淘汰赛中使用foo,并且仍然能够使用_foo覆盖它

foo和bar的区别是什么

如果我在knockoutJS中使用此语法,Knockout将无法找到bar()

看来淘汰赛并不是语言发展的最新版本。在
class
es上定义的方法是不可枚举的。有关如何访问它们的信息,请参阅

我的目标是启用类继承,同时允许重写专门分配给“this”的函数(例如,attached/dispose)


您可以始终执行
this.foo=this.foo.bind(this)

调用
foo()
\u foo()
而不调用
将始终是一个引用错误,而不是一个无限循环抱歉,我是说“this.foo()”-编辑了它
class Test3 {
  constructor() {
    this.foo = () => _foo();
  }

  _foo() {
    console.log('Hello World')
  }
}