там возможны вызовы как document.all("id") так и document.all["id"]
как во втором случае сделать я разобрался - можно сделать прокси и задать через object.setprototypeof
Code: Select all
function sum(a, b) {
return a + b;
}
const handler = {
apply: function(target, thisArg, argumentsList) {
return document.getElementById(name);
} ,
get: function(target, name) {
return document.getElementById(name);
}
};
const proxy1 = new Proxy(sum, handler);
Object.setPrototypeOf(document.all, proxy1);
но в метод apply не заходит и валится, говорит document.all - not a function
как оказывается замена прототипа не меняет тип с object на function
даже если напрямую менять прототип не на прокси, а на function
пробовал гуглить https://stackoverflow.com/questions/124 ... javascript
тема 2011 года, там народ так и не придумал как сделать. Но может в стандарте es6 уже можно как то?