Вопрос про Proxy (ES5 Harmony)
(function() {
var proxy = Proxy.create({
get : function(proxy, name) {
if (name < 0 && proxy.length + +name >= 0) {
return proxy[proxy.length + +name]
}
}
});
window['arr'] = function() {
var arr = Array.apply(this, arguments);
arr.__proto__ = proxy;
return arr;
}
})();
var q = arr(1, 2, 3, 4, 5, 6, 7, 8, 9)
alert(q[0])
alert(q[1])
alert(q[2])
alert(q[-1])
alert(q[-2])
alert(q[-3])
при литеральной нотации используется родной конструктор Array. Как научиться перехватывать запросы с отрицательными числами на ВСЕ массивы, созданные даже вот так [1,2,3] ? Второй вопрос, как покрасивее сохранить методы массивов? или вообще все придется переписывать? |
Блин, че то я затупил) а не проще ли ретурнить прокси обьект а массив держат в памяти)? у меня прокси лежит в прототипе массива) и если запрос проходит мимо массива, то его перехватывает прокси и смотрит отрицательное ли число запрашивалос, если да то снова возвращается к массову, достает от туда нужный элемент и ретурнит его))
не проще ли создавать обычный массив, потом создавать прокси и делать прототипом прокси обьекта массив и ретурнить прокси)???? блин какой же я мудак что сразу не допер! на то и название ПРОКСИ)! Вопрос снимаю. |
Proxy.create({
get: function (proxy, i) {
alert(i);
}
}, [1, 2, 3])[-1];
только в стандарте отрицательные значения индексов уже вроде есть ---------------- что-то у меня еще нету Proxy в Chrome 19 dev, наверное какой-нибудь canary build надо качать |
А можно как то пруф или ссылку где видел об этом?
|
|
| Часовой пояс GMT +3, время: 22:06. |