Javascript 是否在u.filter中访问this.var?
我有一个变量this.myvar,它是一个数组。我想用这个变量创建一个Javascript 是否在u.filter中访问this.var?,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,我有一个变量this.myvar,它是一个数组。我想用这个变量创建一个.filter(),但是在.filter()函数中,我的这个.myvar是未知的 有没有办法解决这个问题,或者我完全误解了什么 this.my_array = ['aaa', 'bbb', 'ccc', 'ddd']; this.my_filter = ['aaa', 'ccc']; my_filtered_object = _.filter(this.my_array, function(item) {
.filter()
,但是在.filter()
函数中,我的这个.myvar
是未知的
有没有办法解决这个问题,或者我完全误解了什么
this.my_array = ['aaa', 'bbb', 'ccc', 'ddd'];
this.my_filter = ['aaa', 'ccc'];
my_filtered_object = _.filter(this.my_array, function(item) {
alert(this.my_filter.toSource());
/*
if(this.my_filter.indexOf(item) != -1) {
return item;
}
*/
});
警报应显示this.my\u filter的值,但似乎在
\u.filter()
中无法访问该变量有各种解决方案
var my_filter = this.my_filter;
my_filtered_object = _.filter(this.my_array, function(item) {
alert(my_filter.toSource());
});
内部的上下文(this
)设置为指向函数外部的this
:
my_filtered_object = _.filter(this.my_array, function(item) {
alert(this.my_filter.toSource());
}, this);
解决方案2对我来说最有意义。有多种解决方案
var my_filter = this.my_filter;
my_filtered_object = _.filter(this.my_array, function(item) {
alert(my_filter.toSource());
});
内部的上下文(this
)设置为指向函数外部的this
:
my_filtered_object = _.filter(this.my_array, function(item) {
alert(this.my_filter.toSource());
}, this);
解决方案#2对我来说最有意义。如果要访问this.my_筛选器,则需要将传递给#.filter()的匿名函数绑定到您的上下文 使用下划线,您只需按如下方式更改代码:
my_filtered_object = _.filter(this.my_array, _.bind(function(item) {
alert(this.my_filter.toSource());
/*
if(this.my_filter.indexOf(item) != -1) {
return item;
}
*/
}, this));
如您所见,我添加了将所需上下文附加到匿名函数的u.bind()方法。如果要访问this.my\u筛选器,则传递给u.filter()的匿名函数需要绑定到上下文 使用下划线,您只需按如下方式更改代码:
my_filtered_object = _.filter(this.my_array, _.bind(function(item) {
alert(this.my_filter.toSource());
/*
if(this.my_filter.indexOf(item) != -1) {
return item;
}
*/
}, this));
如您所见,我添加了u.bind()方法,将您需要的上下文附加到匿名函数。您可以公开一些代码吗?哦,对不起,我忘了。我已经编辑了这个问题;)可能重复检查这个答案你能暴露一些代码吗?对不起,我忘了。我已经编辑了这个问题;)检查此答案的可能副本