我可以在 javascript 中使用函数表达式作为 class 方法吗?

Can I use a function expression as class method in javascript?

我期待 javascript 中的具体问题。

我想使用函数表达式作为 class 方法,但我不知道是否可行。我试图查看有关它的任何文档,但我没有找到...这是一个示例:

class TourIdentifier extends HttpClient {
   constructor(baseURL, langCode, ...attr) {
       super({
            baseURL,
            headers: {
            lang: langCode
       }
       });

      this.model.init(...attr);
    }

    model =  function init(...attr) {
    this.tours_identifiers_identifier   = attr[0];
    this.tours_id                       = attr[1];
    this.lang_code                      = attr[2];
    this.tours_id_                      = attr[3];
    this.tours_identifiers_id           = attr[4];
    }

...

我知道有很多方法可以做到这一点,但我只是有这个问题,我希望在 JS 方面比我更有经验的人可以分享他们的知识。

感谢您的评论!

此致!

这是您需要了解的有关 classes MDN 中方法定义的所有信息,但这里是我的一些解释:

基本上你是在尝试在 class 中定义一个方法(这需要给这个方法一个名字),然后给它分配一个命名函数。 这会起作用,但您将无法使用函数名称调用 class 的方法,但您可以使用方法名称调用它。

假设您有一个对象和一个单独的函数:

function func() {return 'Hello'}

const obj = {};

并且您想将函数分配给您将要执行的对象的属性之一:

obj.myFunction = func;

从现在开始,您将像这样从对象调用函数:

obj.myFunction();

但是我们当然可以在对象的声明处分配函数:

function func() {return 'Hello'};

const obj = {
    myFunction: func
}

而且您仍然要像这样从对象调用函数:

obj.myFunction();

对于尸体,您可以在对象的声明中声明命名函数:

const obj = {
    myFunction: function func() {return 'Hello'}
}

而且您仍然要像这样从对象调用函数:

obj.myFunction();

所以我希望你明白我要去哪里......同样的事情可以应用于 classes,因为我们知道它们只是糖语法 :) 简而言之,这是可能的,但函数的名称将没有用。

class foo {
    constructor() {
    //something
  }
  
  method = function init() {
    console.log('init 1');
  }
}

const fooInstance = new foo();

fooInstance.method();