Цитата:
|
В JS нет operator overload. Так просто нельзя.
Ведь это классы а не массивы. Вот ты представь себе что будет если сделать? extends Array Я потеряю возможность адресации. Нельзя будет просто так двигать изначальный адрес. Да к тому же надо будет реализовать для всех массивов, включая типизированные. Так нельзя будет передавать указатель в указатель (т.е. приравнивание). Мне такое не надо. |
Цитата:
|
Прокси это прокси, это отдельная фича (обертка поверх класса).
Да и в хроме нету. Также я не вижу в Proxy столь важной функции как замещение скалярных операторов. |
Цитата:
Цитата:
|
Провожу доработку, довожу до ума.
|
Цитата:
var arr = []; Object.defineProperty ( arr, 0, { get: function () { alert(); return 0; } set: function (val) { alert(val); } } ); arr [0] = 5; console.log( arr [0] ) |
Cyber, Я реализовал через Proxy.
Вот обработчик для Proxy. let _indexer = { get: function(obj, prop){ return (!isNaN(prop) ? obj.get(parseInt(prop)) : obj[prop]); }, set: function(obj, prop, val){ if(!isNaN(prop)){ obj.set(val, parseInt(prop)); } else { obj[prop] = val; } } }; Проверяет, является ли переменная prop числом или нет. Если да, то извлечь ячейку памяти. |
acterhd, учитывая поддержку прокси браузерами то не особо полезно тогда)
|
Работает библиотека во всех браузерах, кроме Firefox.
|
Часовой пояс GMT +3, время: 03:35. |