js中的class继承怎么使用?

作者站长头像
站长
· 阅读数 8

js中的class继承怎么使用?

父类Parent中有个fetch函数,我想再次包装下,只对入参做些修改,其他的全部继承父类,但是一直失败

class Parent {
            constructor() {

            }
            fetch = (data) => {
                console.log(1, data)
            }            
        }

class Child extends Parent {
            constructor(props) {
                super(props)
            }

            fetch = (data) => {
                if (data) {
                    data.name = 'test'
                }
                console.log(2, data)
                return super.fetch(data)
            }
        }

Parent是个组件fetch是箭头函数尽量不做修改,上面这种写法会报错super.fetch is not afunction,原因是super不支持在箭头函数中使用,但是改成常规写法

fetch() {

}

这种方式又没法重写Parent中的fetch函数,请问这种情况该怎么处理?

class Child extends Parent {
            constructor(props) {
                super(props)
            }

            fetch = (data) => {
                if (data) {
                    data.name = 'test'
                }
                const item = new Parent()
                return item.fetch(data)
            }
        }

这样写可以么?

回复
1个回答
avatar
test
2024-06-23
class Parent {
  constructor() {}

  fetch = (data) => {
    console.log(1, data);
  };
}

class Child extends Parent {
  constructor(props) {
    super(props);
  }

  // 改写
  fetch = ((superfetch) => (data) => {
    if (data) {
      data.name = "test";
    }
    console.log(2, data);
    superfetch(data);
  })(this.fetch);
}

做了修改,应该可以满足你的方式。

参考的 => https://stackoverflow.com/a/52823577/10378232

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容