Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在setTimeout()内设置构造函数对象的值?_Javascript_Object_Constructor_Settimeout_Anonymous Function - Fatal编程技术网

Javascript 如何在setTimeout()内设置构造函数对象的值?

Javascript 如何在setTimeout()内设置构造函数对象的值?,javascript,object,constructor,settimeout,anonymous-function,Javascript,Object,Constructor,Settimeout,Anonymous Function,我想在作为Constructorfunction属性的arrowfunction中设置Constructorfunction的属性。在arrow函数中,我想使用setTimeout(),它将函数作为参数。在我的例子中,是一个匿名函数 提前感谢:) 将您的setTimeout回调更改为箭头函数,以使其继承外部作用域(即您的构造函数的作用域) 将您的setTimeout回调更改为箭头函数,以使其继承外部作用域(即您的构造函数的作用域) 代码中没有为ConstructorFunction设置属性。注意

我想在作为Constructorfunction属性的arrowfunction中设置Constructorfunction的属性。在arrow函数中,我想使用setTimeout(),它将函数作为参数。在我的例子中,是一个匿名函数

提前感谢:)


将您的
setTimeout
回调更改为箭头函数,以使其继承外部作用域(即您的
构造函数的作用域)


将您的
setTimeout
回调更改为箭头函数,以使其继承外部作用域(即您的
构造函数的作用域)


代码中没有为
ConstructorFunction
设置属性。注意,构造函数中的
这个
指的是新创建的构造函数实例,而不是构造函数本身。是的,我知道这一点。但你是对的,我对那部分解释得很糟糕。感谢您的澄清:)您的代码中没有为
ConstructorFunction
设置属性。注意,构造函数中的
这个
指的是新创建的构造函数实例,而不是构造函数本身。是的,我知道这一点。但你是对的,我对那部分解释得很糟糕。谢谢你的澄清:)哇,太快了!非常感谢你,我真的不知道为什么我没有一直坚持使用箭头函数…不用担心,很高兴它有帮助:)哇,太快了!非常感谢,我真的不知道为什么我没有一直坚持使用箭头函数……不用担心,很高兴它起到了作用:)
function ConstructorFunction(){
    this.statusOptions = {
        idle : 'idle',
        working : 'working'
    };

    this.status = this.statusOptions.idle;

    this.setStatus = () => {
        setTimeout(function(){
            this.status = this.statusOptions.working;
        }, 2000);
    };

}

var instance = new ConstructorFunction();
instance.setStatus();
this.setStatus = () => {
  setTimeout(() => {
    this.status = this.statusOptions.working;
  }, 2000);
};