gpt4 book ai didi

javascript - 构造函数中的值不会改变

转载 作者:行者123 更新时间:2023-12-03 07:57:02 24 4
gpt4 key购买 nike

我对编写 OO JavaScript 还很陌生。我尝试做这件事只是为了学习。我的问题是,我用构造函数定义了一个服务,但它只运行一次。

代码如下:

const app = angular.module('app', []);

class ViewportChecker {
constructor() {
this.scrollTop = window.pageYOffset;
}
}

app.directive('sectionModule', ($window) => {
return {
link(scope, el) {
const service = new ViewportChecker,
win = angular.element($window);

win.on('scroll', () => {
console.log(service.scrollTop);
});
}
};
});

我在控制台中只得到0。我做错了什么?

最佳答案

在实例化 ViewportChecker 变量的那一刻window.pageYOfsset 可能是 0(因为你还没有滚动)

所以当你稍后console.log(service.scrollTop)时这个变量仍然是0。

也就是说,您指定 this.scrollTop = 0,因此 service.scrollTop 将来将始终为 0。

你可以做的就是例如

constructor() {
this.getScrollTop = function () { return window.pageYOffset; }
}

win.on('scroll', () => {
console.log(service.getScrollTop());
});

关于javascript - 构造函数中的值不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34755084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com