quot;Uncaught TypeError: this._isDateType is not a functionquot; within Arrow Function(未捕获的TypeError:this._isDateType不是Arrow函数内的函数Quot;(Q;))
问题描述
我每次都会收到找不到函数定义的类型错误。代码如下所示:return BaseController.extend("ch.micarna.weightprotocol.controller.Calendar", {
onInit: function () {
console.log(this._isDateType(new Date()));
let oHbox = this.byId("calendar-container");
let oTodayDate = new Date();
let oEndDate = this._getLastDayOfMonth(oTodayDate);
},
_getLastDayOfMonth: (oBegin) => {
if (this._isDateType(oBegin)) {
throw new TypeError("The given parameter is not type of date.");
}
return new Date(oBegin.getFullYear(), oBegin.getMonth() + 1, 0);
},
_isDateType: (oDate) => {
return Object.prototype.toString.call(oDate) === "[object Date]";
},
});
问题在于_isDateType
函数在_getLastDayOfMonth
函数内调用时找不到它。
我设置了断点:
如您所见,该函数未定义,我不知道原因。
在onInit
函数的开头,我调用了_isDateType
函数:
console.log(this._isDateType(new Date()));
,并提供了预期的结果。
我做错了什么?
推荐答案
替换箭头函数
_getLastDayOfMonth: (oBegin) => {
// this....
},
正常function expression:
_getLastDayOfMonth: function(oBegin) {
// this...
},
这样_getLastDayOfMonth
可以自由访问Controller实例内的其他方法。
为什么它不能与箭头函数配合使用
首先,重要的是要知道箭头函数在词法上绑定它们的上下文。
箭头函数表达式的语法比函数表达式短,没有自己的
this
。[source].bind
。它们在评估时从闭包中获取this
。- 由于
this
不是控制器的实例,而是调用BaseController.extend
时的window
对象,因此在箭头函数内部调用this._isDateType
等同于window._isDateType
。
这篇关于未捕获的TypeError:this._isDateType不是Arrow函数内的函数&Quot;(&Q;)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:未捕获的TypeError:this._isDateType不是Arrow函数内的函数&Quot;(&Q;)
基础教程推荐
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 动态更新多个选择框 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01