javascript - 从内部函数访问本地对象属性(Javascript)

标签 javascript jquery

我有一个 Javascript 对象,它试图从方法中的 setInterval() 内部访问本地属性,但显然因为它试图调用 setInterval 中函数的本地范围,所以本地属性是返回未定义。代码如下:

function Timer() {
    this.remaining = 15000;
}

Timer.prototype.start = function() {
this.refreshId = setInterval(function() {
    console.log(this.remaining);
},1000);
}

如何访问本地“剩余”变量?谢谢!

最佳答案

function Timer() {
    this.remaining = 15000;
}

Timer.prototype.start = function() {
var that = this;
this.refreshId = setInterval(function() {
    //this.adjust(-1000);
    that.remaining -= 1000;
    console.log(that.remaining);
    if (that.remaining <= 0) {
        that.remaining = 0;
        that.status = 'paused';
        clearInterval(that.refreshId);
    }
},1000);
}

setInterval 函数在全局范围内调用。因此,您可以将“this”缓存为不同的变量(例如,作为“that”,这在开发人员中很常见。)

另一种选择是提出一个 .bind 函数或方法,您可以通过搜索 Google 来了解如何操作。

阅读:Understanding Javascript Closures with Ease

关于javascript - 从内部函数访问本地对象属性(Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20808439/

相关文章:

javascript - 将内部 div 文本传递给函数

javascript - CORS - 预检请求后发出的请求期望 'Access-Control-Allow-Credentials' 为真

javascript - 根据顶部和底部的高度改变内容高度

jquery - MVC 4 Razor 对象不支持属性或方法 'dataTable'

javascript - JQuery 未使用 $ ('#22/1' 创建对象)?

javascript - GMap 轴承旋转平稳运动(改变轴承值时避免抖动效果)

javascript - 单击导航链接后折叠/隐藏移动导航菜单

javascript - 如何在Magento2 CMS中通过元素id将页面主体滚动到特定位置?

javascript - 如何使用ajax从jsp中检索 Controller 返回的值

jquery - 如何使用 jQuery 重新定位 DIV?