【发布时间】:2017-03-08 23:28:06
【问题描述】:
给定 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 Test2 {
constructor() {
this.foo = () => this.foo(); // endless loop
}
foo() {
console.log('Hello World')
}
}
我不知道这是否有意义,但我想拥有您在Test2 中看到的内容。主要是,我想将覆盖功能添加到我的淘汰赛应用程序中。如果我从Test1 扩展并覆盖foo,我将无法调用super.foo()。
我的目标是启用类继承,同时允许覆盖专门分配给“this”的函数(例如附加/处置)。
编辑:作为一种解决方法,我可以这样处理:
class Test3 {
constructor() {
this.foo = () => _foo();
}
_foo() {
console.log('Hello World')
}
}
这将允许我在淘汰赛中使用 foo 并且仍然能够使用 _foo 覆盖它。
【问题讨论】:
-
在没有
this的情况下调用foo()或_foo()将始终是引用错误,而不是无限循环 -
对不起,我的意思是说 'this.foo()' - 编辑了它
标签: javascript knockout.js ecmascript-6