我是使用Node / Javascript(ES6)的新手。 请参见下面的示例:
class MyClass {
myTest() {
console.log('it works')
}
runMyTest() {
this.myTest()
}
}
如果我在this.
行中省略了this.myTest()
,则会出现运行时错误:
myTest() ^
ReferenceError:未定义myTest
在我看来,调用在调用者的同一对象(在这种情况下为Class Object)中声明的方法是强制性的,需要this.method()
对吗?
以类似的方式,我看到(子类对象的)父方法需要super.parentMethod()。
来自Ruby /其他听起来很奇怪的OO语言。
为什么在JS中强制使用this.
/ super.
的原因?
更新:
我发现了一个小的解决方法(以避免这种方法重复):
class MyClass {
myTest() {
console.log('it works')
}
runMyTestManyTimes() {
const mytest = this.mytest
myTest()
...
myTest()
...
myTest()
...
}
}
答案 0 :(得分:3)
因为 * *
[0][1][2][3][4][5]
^
s now points to the original address plus two!
len(s) = 2
cap(s) = 4
指向this
的实例(在原型上带有类方法),并且没有它,您的方法就不会 see 该函数,因为它不是寻找正确的地方。它将使用范围内的任何内容,即,如果MyClass
函数是在全局类外部声明的。
答案 1 :(得分:1)
这是因为与Java或C#(您很可能从中看到过这种做法)不同,JavaScript可以具有不属于该类的函数。
在这种情况下您会怎么做?
class MyClass {
myTest() {
console.log('it works');
}
runMyTest() {
myTest(); // oops
}
}
function myTest() {
console.error('It does not work! Oh my god everything is on fire!');
}