嘿所有人我是TypeScript的新手。 我正在尝试编写一些函数,参考函数的这个函数,编译之后我得到了Window的这个函数。 我不明白为什么要这样做。 感谢您的任何建议。 这是代码
TS
var checkSection = () => {
$('.section').each((index)=> {
var $this = $(this),
topEdge:number = $this.offset().top,
bottomEdge:number = topEdge + $this.height(),
wScroll:number = $(window).scrollTop();
if(topEdge < wScroll && bottomEdge > wScroll) {
var current:string = $this.data('section');
console.log('current data attribute ' + current);
console.log('current index ' + index);
}
})
}
JS输出
var _this = this;
var checkSection = function () {
$('.section').each(function (index) {
var $this = $(_this),
topEdge = $this.offset().top,
bottomEdge = topEdge + $this.height(),
wScroll = $(window).scrollTop();
if (topEdge < wScroll && bottomEdge > wScroll) {
var current = $this.data('section');
console.log('current data attribute ' + current);
console.log('current index ' + index);
}
});
};
答案 0 :(得分:2)
这就是arrow operator的用途 - 维护this
的上下文,以便它与声明函数的上下文相同。如果您不想要这种行为,请不要使用=>
。使用function
。
或者,不要假设jQuery回调中的this
是对当前元素的引用。相反,使用传递给.each
回调的元素的句柄:
$('.section').each(function (index, element) {
var $this = $(element)