javascript - 如何使用Javascript从同一类中的另一个函数中访问类函数
问题描述
我正在尝试在我的班级中执行一个由另一个函数触发的函数。
这是一个例子。Foo
是一个类,在构造时调用函数Bar()
。动画完成后,我想doSomething
,但这不起作用,并引发错误。
代码如下,或者您可以在此处测试 JSFiddle。
class Foo
{
Bar(){
$("#element").animate({ width : "100%" }, {
duration : 1000,
complete : function(){
console.log("test");
this.doSomething();
}
});
}
doSomething()
{
// Do something
}
constructor(){
this.Bar();
}
}
var example = new Foo();
#cont {
width: 100%;
}
#element {
width: 0;
height: 20px;
background: black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="cont"><div id="element"></div></div>
错误:
未捕获的类型错误:this.doSomething 不是函数
如何doSomething()
从这个函数中调用类中的函数?
解决方案
你正在失去“这个”的背景。您可以使用箭头函数“完成:()=>{”或分配 that = this 并为旧版本的 JS 运行 that.doSomething()。
推荐阅读
- amazon-web-services - 在 Fn::Transform 中使用 FindInMap 作为位置参数
- google-cloud-run - 如何为 GKE 上部署的 Google Cloud Run 服务增加 15 分钟的请求超时?
- ruby-on-rails - ActiveRecord:如何在使用 left_join 时取消 default_scope 的范围?
- c - C中的信号量死锁
- c++ - 多线程未按预期运行
- docker - 加快 'apt-get update' 以加快 Docker 映像构建
- c# - 控制器的非异步方法是否会阻止其他用户在使用或锁定时进入?
- f# - 如何在 F# 中使用 C# 可为空的日期时间
- c++ - CMake 找不到 boost_test
- python - 如何将函数中的值设置为 CSV?