javascript - 在 Javascript 类中创建全局变量时出错
问题描述
我正在尝试创建一个页面变量,我的 Scroller 类可以使用该变量进行无限滚动。我认为我需要它是全局的,以便它在 ajax 函数之外记住自己。
class Scroller {
window.page = 1;
constructor(){
this.events();
}
events(){
$(document).on("scroll", this.on_scroll.bind(this))
}
on_scroll(e){
var scroll_top = $(window).scrollTop();
var body_height = $('body').height();
var win_height = $(window).height();
var height_diff = body_height - win_height;
if( (scroll_top+1 >= height_diff) && working==false){
working=true;
console.log("greater than diff");
this.load_more();
}
else{
//console.log(scroll_top);
//console.log("greater than diff");
}
}
我也试过:
var page = 1;
page = 1;
$page = 1;
所有这些都会产生错误,通常是语法错误。在类中创建全局变量的最佳方法是什么?或任何用于传递给正在调用的滚动函数的变量。我还需要这些,所以我可以创建一个“工作”变量,这样 ajax 就不会多次加载。
谢谢你的帮助
解决方案
如果尚未定义,您可以在构造函数中定义它:
class Scroller {
constructor() {
window.page = window.page || 1;
this.events();
}
}
话虽如此,这里有一种严重的设计气味。您也可以在类之外定义变量。
另请注意,它不必是全局的;您可以在类对象本身上定义它并将其称为Scroller.page
:
class Scroller {
/* ... */
}
Scroller.page = 1;
推荐阅读
- opengl - 添加多个输出时,OpenGL 着色器二进制文件无法链接
- sqlalchemy - 在学习机上安装sqlalchemy
- ubuntu - RTX3060 无法使用 cuda11.4 运行 Pytorch Yolov4
- c++ - 使用 systemd 时
.socket,哪个文件描述符接收套接字? - java - 使用 FileReader 测试文件是否为空白
- firebase - 发送 Firebase 消息时出现 SSL 问题
- parsing - 确定是什么减慢了词法分析器的编译速度
- angular - 为什么即使远程命令完成,Jenkins sshPublisher 也会等待?
- javascript - javascript中的newDate()函数转换为CDT
- ios - 选择 fastlane 匹配配置文件时缺少用于签署证书的私钥