私はその中にこれを含む関数を持っています:
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
。)
問題:の関数は変数が何であるかを認識せず、"1999" と "undefined" を比較するため、結果は代わりにtrue
itになります。false
f()
doMagic
year
ご覧のとおり、問題の場所はわかっていますが、解決策については考えられません。
アイデア?
よろしく