javascript - JavaScript 进度条不适用于 OO JS 代码,但适用于箭头功能?
问题描述
这是我自己发布的这个问题之后的一个问题: JavaScript progress bar does not work with oo js code
除了上面帖子中的解决方案,我尝试使用箭头函数重写 OO 脚本,代码为:
document.getElementById("barButton").addEventListener("click", callMove);
function callMove() {
var bar1 = new ProgressBar();
bar1.move();
}
function ProgressBar() {
this.elem = document.getElementById("myBar"),
this.width = 1;
this.move = () => {
this.id = setInterval(this.frame, 10);
};
this.frame = () => {
if (this.width >= 100) {
clearInterval(this.id);
} else {
this.width++;
this.elem.style.width = this.width + '%';
}
};
}
#myProgress {
width: 100%;
background-color: grey;
}
#myBar {
width: 1%;
height: 30px;
background-color: black;
}
<html>
<head>
<title>
This is a OO progress bar test.
</title>
<link rel="stylesheet" href="testOOProgressBar.css">
</head>
<body>
<div id="myProgress">
<div id="myBar"></div>
</div>
<br>
<button id="barButton">Click Me</button>
<script src="testOOProgressBar.js"></script>
</body>
</html>
它可以在不使用 .bind() 的情况下工作(如原始帖子中所述)。为什么?这个箭头函数案例和上一篇中的构造函数/原型案例有什么区别?
解决方案
箭头函数没有自己的this,它的this继承和声明所在的函数。
推荐阅读
- mule - 基于嵌套值的 Dataweave 过滤数组
- java - Thymeleaf 中未识别的属性
- mysql - 当尝试将INT存储在customerid列中时,“|”(在整数之前)在mysql中意味着什么?
- sql-server - sql server - 构建逻辑所需的帮助
- javascript - 在 Shopify 商店中使用 AJAX 将所有产品变体和数量添加到购物车
- r - 尝试构建一个 R 函数以每周将组随机配对,但保持新组大小相同
- api - API 请求失败并出现以下错误:200 - OK
- google-sheets - 我可以使用 gspread 批量更新电子表格中的多个工作表吗?
- node.js - Node.JS - 如何隐藏诸如 cookie 秘密之类的秘密?
- networking - 为什么我无法使用 msal 令牌连接到我的 azure 应用服务?