【发布时间】:2013-09-24 16:06:40
【问题描述】:
我不知道如何访问该值,这是我的代码:
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. 将引用一个正在处理的 JQuery 对象。那么如何才能在该函数/闭包中从我的对象中使用someData 呢?好像没看懂。
感谢您的帮助:)
【问题讨论】:
-
没有。如果您执行
.click(doSomething),它将是 jQuery 对象。目前它什么都不是(或全局对象)。 -
Daniel,
Filters()是一个构造函数,编写为用new Filters()调用。如所写,如果在没有new的情况下调用,构造函数的行为将非常不同。要了解这里的问题,并了解如何编写能够容忍缺少new的构造函数,请尝试this, by John Resig。这是相当重量级的东西,但值得坚持。 -
您可能还需要阅读 Douglas Crockford 的 Private Members in JavaScript。
-
@Beetroot-Beetroot :是的,我知道它是一个构造函数,我打算编写一个类,并将参数传递给构造函数等。我已经删除了所有这些,只留下了我认为相关的内容。我将阅读您链接的文章,谢谢:)
-
Daniel,对不起,我不是故意向你讲授你已经知道的东西。在他们之间,这两篇文章将教你很多关于 javascript 的知识。我希望它们早在 15 年前我开始我的职业生涯的 JS 链时就可以使用。
标签: javascript object closures