Я хочу быть в состоянии сделать это:Chaining JavaScript объект (ES6) Proxy
x.where('age').gt(20);
x.__calls // [['age', []], ['gt', [20]]]
where
и gt
только примеры. Я не знаю, какие функции будут называться, они могут быть чем угодно, и они ничего не делают кроме заполнения массива __calls
.
До сих пор у меня есть следующий код, который использует ES6 в Proxy объект
var x = new Proxy({
__calls: []
}, {
get: function (target, name) {
if (name in target) {
return target[name];
} else {
return() => {
target.__calls.push([name, Array.prototype.slice.call(arguments)]);
return x;
}
}
}
});
Если удалить return x
линию, я могу сделать x.where('age'); x.gt(20)
, чтобы получить правильный __calls
. Тем не менее, с return x
, он переходит в бесконечную рекурсию по какой-то причине ...
@world больше мангуст названными-SCOPES беды – gberger
Для будущих искателей, я думаю, что я придумал решение подобной проблемы здесь: http://stackoverflow.com/вопросы/41886355/захватывая-все-цепочечную-метода-и-добытчики-использование-а-прокси-для-ленивого-исполнения – JoeRocc