quot;Uncaught TypeError: this._isDateType is not a functionquot; within Arrow Function(未捕获的TypeError:this._isDateType不是Arrow函数内的函数Quot;(Q;))
本文介绍了未捕获的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;)


猜你喜欢
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 400或500级别的HTTP响应 2022-01-01