Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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变量函数不保留值_Javascript - Fatal编程技术网

Javascript变量函数不保留值

Javascript变量函数不保留值,javascript,Javascript,此js函数是全局变量的一部分。第一次从另一个js文件调用它时,它就工作了。但第二次,从它本身来看,一切都是空的 Start: function () { console.log('InactivityAlerts.Start() called ...'); if (this.active) { if (this.IDLE_TIMEOUT != "") { window.setInterval(this.CheckIdleTime, 1000

此js函数是全局变量的一部分。第一次从另一个js文件调用它时,它就工作了。但第二次,从它本身来看,一切都是空的

 Start: function () {
   console.log('InactivityAlerts.Start() called ...');
    if (this.active) {
        if (this.IDLE_TIMEOUT != "") {
            window.setInterval(this.CheckIdleTime, 1000);
            console.log('started...');
        }
        else {
            window.setTimeout(this.Start, 1000);
             //an iframe sets the IDLE_TIMEOUT later, but this should continue to 
             //run until it is not blank.
        }
    }
},
当它再次召唤自己;但是,所有内容都为null,包括在此之前从Init设置的this.active。为什么?我怎样才能确保一切正常

感谢您的帮助

这是一个此值问题,请确保在传递函数时绑定了正确的此值

window.setInterval(this.CheckIdleTime.bind(this), 1000);
window.setTimeout(this.Start.bind(this), 1000);
如果总是希望将它们绑定到同一实例,那么也可以在构建时绑定它们

function YourConstructor() {
    //assumes that someFunction is defined on YourConstructor.prototype
    this.someFunction = this.someFunction.bind(this);
}
或与已知实例相同:

InactivityAlerts = {
    Start: function () { /*...*/ }
};

InactivityAlerts.Start = InactivityAlerts.Start.bind(InactivityAlerts);
这是一个this值问题,请确保在传递函数时绑定了正确的this值

window.setInterval(this.CheckIdleTime.bind(this), 1000);
window.setTimeout(this.Start.bind(this), 1000);
如果总是希望将它们绑定到同一实例,那么也可以在构建时绑定它们

function YourConstructor() {
    //assumes that someFunction is defined on YourConstructor.prototype
    this.someFunction = this.someFunction.bind(this);
}
或与已知实例相同:

InactivityAlerts = {
    Start: function () { /*...*/ }
};

InactivityAlerts.Start = InactivityAlerts.Start.bind(InactivityAlerts);

@阿达姆拉克是的!最后我相信现在要想获得高知名度是很难的,呵呵。当我看到超过20万的rep用户时,这是相当令人沮丧的。哈-好吧,这些20万人已经在这里很多年了,他们不需要做太多就可以收集rep的老问题。不要泄气!我花了很多很多时间才完成了10公里,幸运的是当时我的工作很轻松:棒极了!在我使用js的所有岁月中,我从未遇到过这种情况。再次感谢哈,很高兴我能帮上忙。变量属性也是这样吗?例如,this.active或它们是否总是正确地引用自身?@GregGamm这个问题对于非函数值根本不存在。如果this.active是布尔值,并且您将其传递给其他人,那么它在所有上下文中都将保持不变。但是,如果您有一个this.isActive函数返回this.active,并且在不明确绑定函数的情况下传递它,例如var isActive=obj.isActive;现在,当您调用isActive时,它将不会返回您期望的结果,因为在函数执行期间,它将不再是obj。@AdamRackis耶!最后我相信现在要想获得高知名度是很难的,呵呵。当我看到超过20万的rep用户时,这是相当令人沮丧的。哈-好吧,这些20万人已经在这里很多年了,他们不需要做太多就可以收集rep的老问题。不要泄气!我花了很多很多时间才完成了10公里,幸运的是当时我的工作很轻松:棒极了!在我使用js的所有岁月中,我从未遇到过这种情况。再次感谢哈,很高兴我能帮上忙。变量属性也是这样吗?例如,this.active或它们是否总是正确地引用自身?@GregGamm这个问题对于非函数值根本不存在。如果this.active是布尔值,并且您将其传递给其他人,那么它在所有上下文中都将保持不变。但是,如果您有一个this.isActive函数返回this.active,并且在不明确绑定函数的情况下传递它,例如var isActive=obj.isActive;现在,当您调用isActive时,它将不会返回您期望的结果,因为在函数执行期间,它将不再是obj。