кто хорошо знает js?

User avatar
OtherSide
Уже с Приветом
Posts: 17361
Joined: 01 Mar 2008 15:14

кто хорошо знает js?

Post by OtherSide »

Дали тестовое задание, нужно проэмулировать document.all из старого IE

там возможны вызовы как 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);
вот так срабатывает document.all["id"]

но в метод apply не заходит и валится, говорит document.all - not a function

как оказывается замена прототипа не меняет тип с object на function
даже если напрямую менять прототип не на прокси, а на function

пробовал гуглить https://stackoverflow.com/questions/124 ... javascript

тема 2011 года, там народ так и не придумал как сделать. Но может в стандарте es6 уже можно как то?

Return to “Вопросы и новости IT”