首页 > 解决方案 > 如何使用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()从这个函数中调用类中的函数?

标签: javascriptfunctionclass

解决方案


你正在失去“这个”的背景。您可以使用箭头函数“完成:()=>{”或分配 that = this 并为旧版本的 JS 运行 that.doSomething()。


推荐阅读