繁体   English   中英

从javascript闭包内访问对象的值

[英]Access values of object from within a javascript closure

我无法获取该值,这是我的代码:

function Filters()
{
    this.filters = ["filter_1", "filter_2", "filter_3"];
    this.someData = "test";
    this.draw = draw;
    function draw(){
        for(var i=0; i<this.filters.length;i++)
        {
            var filter = this.filters[i];
            $("#" + filter).click(function(){
                doSomething();
            });
        }
    }
    function doSomething(){
        alert(this.someData);
    }
}

我知道一个事实,因为doSomething()是从闭包内部调用的,所以this.是事实this. 将引用正在处理的JQuery对象。 那么,如何在该函数/闭包中使用对象中的someData呢? 似乎无法弄清楚。
感谢帮助 :)

不, doSomething内部的this将是全局对象。 您需要在单独的变量中保留this的引用:

function Filters()
{
    var that = this; // reference to this
    this.filters = ["filter_1", "filter_2", "filter_3"];
    this.someData = "test";
    this.draw = draw;
    function draw(){
        for(var i=0; i<this.filters.length;i++)
        {
            var filter = this.filters[i];
            $("#" + filter).click(function(){
                doSomething();
            });
        }
    }
    function doSomething(){
        alert(that.someData);
    }
}

与您的问题无关:您还可以将doSomething的引用作为事件侦听器传递,而不是将其包装在另一个函数中:

$("#" + filter).click(doSomething);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM