Вопрос про 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, время: 03:27. |