我最近开始在Classes
中学习javascript
,在阅读一些非常有趣的内容时,我想到了尝试自己的一些想法。
如果您有Parent
的父类,其中method
子logSomething```` and a child class of
类的, with which you do
是子类扩展了Parent , how can you then execute the inherited method from the parent class,
logSomething` ,在子班内?
如果您在Child
类内部定义一个方法并将this.logSomething()
添加到该方法,则无论何时调用子类中的方法,继承的logSomething
函数实际上都会运行,但是除此之外,我还没有找到直接在该子类内部执行logSomething
的任何方法。
我尝试过this.logSomething()
,尝试过将其添加到对象,自执行(IIFE)函数以及我能做的所有事情,但是没有结果。
class Parent {
constructor() {}
logSomething() {
console.log('I am logging something')
}
}
class Child extends Paren {
logSomething() // This does not work
}
当前这样做是行不通的,如果它抛出一个错误,指出您试图定义一个函数的事实。
如果我不误会React
使用与life-cycle methods
类似的东西,我知道应该以某种方式实现,对吗?如componentWillMount
。
人们将如何做呢?
答案 0 :(得分:5)
第一个错误是您要扩展Paren
而不是Parent
。
同样,您不能只在类内部抛出随机语句。它必须在函数内部。
如果您希望它在每次创建该类的实例时运行,则它应该在constructor
内或由它调用的函数内。 (请注意,您需要在构造函数的开头调用super()
。
最后,您仍然需要使用this.logSomething
或this.logSomething
class Parent {
constructor() {}
logSomething() {
console.log('I am logging something');
}
}
class Child extends Parent {
constructor() {
super();
this.logSomething(); // Will use Parent#logSomething since Child doesn't contain logSomething
super.logSomething(); // Will use Parent#logSomething
}
}
new Child();
class Parent {
constructor() {}
logSomething() {
console.log('Parent Logging Called');
}
}
class Child extends Parent {
constructor() {
super();
this.logSomething(); // Will call Child#logSomething
super.logSomething(); // Will call Parent#logSomething
}
logSomething() {
console.log('Child Logging Called');
}
}
new Child();
您也可以这样做:
class Parent {
constructor() {}
logSomething() {
console.log('Parent Logging Called');
}
}
class Child extends Parent {
logSomething() {
console.log('Child Logging Called and ...');
// Careful not use this.logSomething, unless if you are planning on making a recursive function
super.logSomething();
}
}
new Child().logSomething();
只要新类对该属性没有自己的定义,就可以使用this
调用任何函数或使用父类的任何属性。
答案 1 :(得分:2)
查看here了解更多信息。
class Parent {
constructor() {}
logSomething() {
console.log('I am logging something')
}
}
class Child extends Parent {
logSomething() {
super.logSomething(); // Call parent function
}
}
答案 2 :(得分:1)
a)您不能在那里调用函数,可以在类中声明的函数中调用函数
b)您需要使用this.logSomething()
示例:
tel
查看在子类中何时class Parent {
constructor() {}
logSomething() {
console.log('I am logging something')
}
}
class Child extends Parent {
fn() {
this.logSomething() // This does work
}
}
new Child().fn()
被称为fn
的其他答案-那么您需要logSomething
来调用“父” logSomething而不是子logSomething