У меня проблема в том, что даже когда я правильно вызываю функцию из другого JS-скрипта, я получаю сообщение об ошибке, что эта функция не существует. У меня есть следующая функция в stopwatch.js:
function timeOut() {
return time;
}
Эта функция является частью функции-конструктора, а время - это переменная.
Я называю это так в main.js:
time = watch.timeOut();
часы - это объект, который я создал с помощью функции-конструктора.
У меня есть оба сценария в index.html, например, в конце тела:
<script type = "text/javascript" src = "js/stopwatch.js"></script>
<script type = "text/javascript" src = "js/main.js"></script>
теперь я получаю следующий код ошибки:
main.js:86 Uncaught TypeError: watch.time is not a function
Я не могу найти причину, почему это происходит
Это фрагмент, который я сократил до проблемы:
//stopwatch.js
function stopwatch() {
var time = 3254; //Example Time
function timeOut() {
return time;
}
}
//main.js
var watch = new stopwatch();
var time;
time = watch.timeOut();
console.info(time);<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<meta http-equiv = "X-UA-Compatible" content = "ie=edge">
<title>Timer</title>
<link rel = "stylesheet" href = "css/style.css">
</head>
<body>
<script type = "text/javascript" src = "js/stopwatch.js"> </script>
<script type = "text/javascript" src = "js/main.js"></script>
</body>
</html>Следует добавить, что у меня есть другие функции в stopwatch.js, и их вызов работает нормально.
Это не очень понятно. Что такое и где часы?
нам нужно намного больше кода, мы поможем вам
Кстати, ребята, это новый участник, не опускайтесь так скоро.
Обновите свой вопрос минимальным, полным и поддающимся проверке примером, демонстрирующим проблему, в идеале - запускаемым с использованием фрагментов стека (кнопка [<>] на панели инструментов; вот как это сделать). - meta.stackoverflow.com/questions/358992/…
Я пишу фрагмент сейчас, у меня просто вопрос, есть ли способ имитировать несколько сценариев JS?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Закрывать. Функция timeOut объявлена в рамках функции stopwatch, но нет ничего, указывающего на то, что она должна быть видимой за пределами этой области. В этом случае простой способ сделать это - установить для него свойство на this в функции stopwatch. Что-то вроде этого:
function stopwatch() {
var time = 3254; //Example Time
this.timeOut = function() {
return time;
};
}
var watch = new stopwatch();
var time = watch.timeOut();
console.info(time);Сейчас работает, большое спасибо!
Где
watch? Гдеtime?