Цитата:
|
В 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, время: 14:14. |