我有一个函数,里面有这个:
var fobj = function(){};
var my_obj = fobj.extend({
test: function(){
this.year = 1999;
my_fmagic.doMagic([
{
field: 'year',
type: 'function',
value: function(data_from_doMagic){
console.log(data_from_doMagic, this.year);
return data_from_doMagic == this.year;
}
}
]);
}
});
然后,doMagic
函数:
var fmagic = function(){};
var my_fmagic = fmagic.extend({
doMagic: function( rules ) {
var data_from_doMagic = 1999;
_.each(rules, function(rule) {
switch(rule.type) {
case "function":
var f = _.wrap(rule.value, function(func){
return func( data_from_doMagic );
});
f();
break;
}
});
}
});
这个想法是:将一组“规则”传递给doMagic
并让它完成其余的工作。
预期结果:test()
应该返回true
(好吧,在这个例子中它不会返回任何东西,很明显,因为没有返回,但value
规则的字段应该是true
。)
问题:结果是true
it's false
,因为f()
in中的函数doMagic
不知道变量year
是什么,因此它将“1999”与“undefined”进行比较。
如您所见,我知道问题出在哪里,但我想不出任何解决方案。
想法?
问候