如何在不同的原型函数中传递内部变量

时间:2019-06-13 11:30:05

标签: javascript

我的问题是我使用setInterval()和clearInterval(),并且想在不同的函数中分别使用它们,这是我的代码:

function Mesh(name,material)
   {
   this.name=name;
   this.material=material;
   this.interval=null;
   this.blink=this.blink.bind(this);
   this.stopBlink=this.stopBlink.bind(this);
   }

Mesh.prototype.blink = function(obj,delay,box) 
{
    var material=this.material;
            this.interval=(function()
                    {
                        var Toggle=true
                            return setInterval(function()
                                {
                                    if(Toggle)
                                        changeMaterial(obj,box);
                                    else
                                        {
                                            changeMaterial(obj,material);
                                        }

                                    Toggle=!Toggle;
                                }
                            , delay);
                    })();
                    console.log(this.interval);

}
 Mesh.prototype.stopBlink=function(obj,duration)
{
    var material=this.material;
    setTimeout(function()
                        {
                            obj.material=material;
                                    clearInterval(this.interval);
                        },duration);
}

问题是,当我使用stair = new Mesh(name1,material1)并调用stair.blink(obj,delay,box)起作用时,我创建了fan = new Mesh(name2,material2),它可以正常工作,但是如果我想使用stair.stopBlink(obj,duration)在楼梯上停止眨眼,它停止风扇而不是楼梯,由于间隔可变,它将使用最后一个被叫(这里我将风扇称为最后一个,所以它停止了风扇的眨眼尽管我试图停止楼梯对象的闪烁)。(当我使用interval作为var时,所有这些都

所以我尝试将interval用作函数的内部变量,但是在这里blink()起作用,当我调用stopBlink()根本不起作用时,我试图在stopBlink()内对其进行控制台,这是未定义的

请帮助

最好的问候

0 个答案:

没有答案