“不清楚的类型错误”;不是一个函数;在同一JavaScript文件中使用函数
好的,我在几个不同的地方进行了研究,发现的大多数问题都与JQuery有关。此外-这更像是一种“越多的眼睛越好”的努力,而不是一种“教我”的努力… 不管怎样,我有一个应用程序要开发,我正在尝试使用MVC模式。因此有3个脚本:“不清楚的类型错误”;不是一个函数;在同一JavaScript文件中使用函数,javascript,typeerror,Javascript,Typeerror,好的,我在几个不同的地方进行了研究,发现的大多数问题都与JQuery有关。此外-这更像是一种“越多的眼睛越好”的努力,而不是一种“教我”的努力… 不管怎样,我有一个应用程序要开发,我正在尝试使用MVC模式。因此有3个脚本:ConverterModel.js、ConverterView.js和ConverterController.js,它们按顺序加载到index.html, 也就是说: <script src="ConverterModel.js"></script>
ConverterModel.js
、ConverterView.js
和ConverterController.js
,它们按顺序加载到index.html
,
也就是说:
<script src="ConverterModel.js"></script>
<script src="ConverterView.js"></script>
<script src="ConverterController.js"></script>
现在,我已经很久没有使用javascript了,所以我还不太习惯它的微妙之处,所以我认为这可能有点愚蠢,但是this.setNumberClickCallbacks()
正在抛出未捕获类型错误:this.setNumberClickCallbacks不是函数
,我无法找出原因
就像我说的,我只是想知道不止一个人在看它,而且很有可能,我明天会再看一次,它会击中我,但是我想积极主动——所以我就在这里
非常感谢您的帮助
-康纳您需要使用
window.addEventListener("load", controller.init.bind(controller));
设置该函数的上下文。您需要使用
window.addEventListener("load", controller.init.bind(controller));
设置该函数的上下文。这个问题的另一个答案也很有效,虽然我没有使用它,但它让我特别关注函数(或我在问题中有时称之为“方法”)、
setNumberClickCallbacks
和ConverterController
对象之间的关系,非常感谢
检查之后,我意识到我已经设置了脚本,首先将var控制器
声明为null
。然后在文件末尾将其定义为ConverterController()
的新实例
这意味着在整个文件中,var控制器
可用于引用来自同一对象的函数
简而言之,我对init()函数做了以下更改:
view.setMenuClickCallback(this.menuButtonCallback);
this.setNumberClickCallbacks();
view.setMenuClickCallback(controller.menuButtonCallback);
controller.setNumberClickCallbacks();
发件人:
view.setMenuClickCallback(this.menuButtonCallback);
this.setNumberClickCallbacks();
view.setMenuClickCallback(controller.menuButtonCallback);
controller.setNumberClickCallbacks();
至:
view.setMenuClickCallback(this.menuButtonCallback);
this.setNumberClickCallbacks();
view.setMenuClickCallback(controller.menuButtonCallback);
controller.setNumberClickCallbacks();
这个问题的另一个答案也很有效,虽然我没有使用它,但它让我特别关注函数(或我在问题中有时称之为“方法”)、
setNumberClickCallbacks
和ConverterController
对象之间的关系,非常感谢
检查之后,我意识到我已经设置了脚本,首先将var控制器
声明为null
。然后在文件末尾将其定义为ConverterController()
的新实例
这意味着在整个文件中,var控制器
可用于引用来自同一对象的函数
简而言之,我对init()函数做了以下更改:
view.setMenuClickCallback(this.menuButtonCallback);
this.setNumberClickCallbacks();
view.setMenuClickCallback(controller.menuButtonCallback);
controller.setNumberClickCallbacks();
发件人:
view.setMenuClickCallback(this.menuButtonCallback);
this.setNumberClickCallbacks();
view.setMenuClickCallback(controller.menuButtonCallback);
controller.setNumberClickCallbacks();
至:
view.setMenuClickCallback(this.menuButtonCallback);
this.setNumberClickCallbacks();
view.setMenuClickCallback(controller.menuButtonCallback);
controller.setNumberClickCallbacks();
当您将引用传递给
.addEventListener()
时,对象与该“方法”之间的关系将丢失。当您将引用传递给.addEventListener()
window.addEventListener(“加载”,函数(){controller.init();})代码>也works@eithed谢谢你们的回答——这让我从不同的角度来看待它,我已经设法弄明白我一开始打算做什么。为了让其他可能处于类似情况的人明白这一点,我发布了自己的答案,并将其标记为问题的答案,因为这是我实现的答案。如果你愿意,你可以看一看并给我任何反馈!再次感谢-康纳