Как вызвать метод из класса в другом классе? Не удается прочитать свойство ‘test’ JS

#javascript #java #jquery

#javascript #java #jquery

Вопрос:

 var test = function (){

    this.text="hello word!!! ";
    
    this.hello= function(){
        alert(this.text);
    }
}
 

У меня есть этот класс… И я хочу использовать этот класс в другом классе, чтобы поздороваться.
Поэтому я делаю это:

 class Alert{
    test;

    constructor(){
        console.log("Starting class alert.")
        this.test= new test();
    }

    say (){
        test.hello()
    }
}

main = new Alert();
main.say();
 

И это выдает мне ошибку mext:

 Uncaught TypeError: Cannot read property 'say' of undefined
    at HTMLButtonElement.<anonymous>
 

Так что я не знаю, как это решить, если кто-то знает, может помочь…

Комментарии:

1. Пожалуйста, добавьте HTML, который также создает ошибку. Кроме того, test.hello() должно быть this.test.hello()

2. Также javascript !== java

3. @adiga Да, я сделал это и ничего…

4. Если этот вопрос не включает в себя как java, так и javascript, пожалуйста, удалите неверный тег. Java и Javascript — очень разные языки.

5. this.test это одна из проблем. Вы не указали HTMLButtonElement и как вы вызываете say , что указано в ошибке.

Ответ №1:

Не забудьте использовать var, let или const для объявления переменных.

Также, если вы хотите вызвать метод внутри класса, используйте this ключевое слово.

 var test = function (){

this.text="hello word!!! ";

this.hello= function(){
    alert(this.text);
}
}

class Alert{
    test;

    constructor(){
        console.log("Starting class alert.")
        this.test= new test();
    }

    say (){
        this.test.hello()
    }
}

var main = new Alert();
main.say();
 
 var test = function (){

  this.text="hello word!!! ";

  this.hello= function(){
      alert(this.text);
  }
}

class Alert{
    test;

    constructor(){
        console.log("Starting class alert.")
        this.test= new test();
    }

    say (){
        this.test.hello()
    }
}

var main = new Alert();
main.say(); 

Комментарии:

1. Я сделал это и ничего