Javascript es6方法内部和外部构造函数-淘汰
考虑到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() 我不知道这是否有意
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')
}
}