@ Берджи Боже мой, вы должны проверять примитивные типы данных, поскольку вы не можете обернуть прокси вокруг них. Обновил код. Я не полностью согласен, хотя, я чувствую, если я буду обрабатывать все случаи правильно, прокси объект окна должен работать нормально, технически говоря.

ользую прокси javascript для перехвата вызовов метода к объекту, однако, если метод не настраивается и не доступен для записи, я не могу правильно перехватить его

var handler = {
  get(target, key, receiver) {
      if (target[key] && (typeof target[key] === 'object' || typeof target[key] === "function")) {
      var desc = Object.getOwnPropertyDescriptor(target, key);
      if (desc && ! desc.configurable && !desc.writable) return Reflect.get(target,key);
      var method = Reflect.get(target, key);
      if (typeof method == "function") {
        return function (...args) {
            return method.apply(target, args);
         }
        } else return new Proxy(method, handler);
      } else return Reflect.get(target,key);
    }
 }



var p = new Proxy(window, handler);
p.alert("alert message") // this works fine as I'm passing the correct context inside
                        // `method.apply`
p.location.valueOf(); // throws illegal invocation error as valueOf is a 
                      //non configurable property and I can't pass my custom "function(..args){}" function
                      //as I do for other methods

Ответы на вопрос(0)

Ваш ответ на вопрос