Всем привет))
Попытаюсь сформулировать вопрос, возможно ли как-либо перехватить запрос на выполнение функции до её выполнения?
К примеру у меня есть некая переменная arr я запускаю функцию arr.push(blabla); но я не хочу чтобы она выполнялась, вот так сразу, а хочу предварительно перехватить этот запрос и в зависимости от разных данных обработать его по своему, возможно ли создать такую функцию?
Подскажите как, буду очень признателен!
JavaScript
Проверка вызывалась ли функция (подробности внутри)
Чтоб перехватить запрос функции надо предварительно схронить её под другим именем потом насадить свою функцию на это имя тоой функции что пытаетесь перехватить и после этого если того как ваша функция решит запускать оригинал или нет выполнить оригинальную функцию :)
Или можете поизучать объект Прокси как с ним работать
⚤
Или можете поизучать объект Прокси как с ним работать
⚤
Алексей Сиднев
!Спасибо
Это можно сделать либо интерфейсом, либо расширив класс Array своим методом, либо используя Proxy (ES6).
Алексей Сиднев
Спасибо, еще не добрался до Proxy
естественно язык программирования значения не имеет, ну да, зачем?
а вообще, возможно всё, напримей пойти в библиотеки ядра и переписать их.
Но такое вмешательство ооочень не понравиться антивирам если это винда, и потребует недюженных знаний если это линуха.
а вообще, возможно всё, напримей пойти в библиотеки ядра и переписать их.
Но такое вмешательство ооочень не понравиться антивирам если это винда, и потребует недюженных знаний если это линуха.
Алексей Сиднев
Что значит не имеет? указана же категория JavaScript
например можно переопределить функцию.
при вызове arr.push(blabla), запускается функция push объекта Array.
Т. е. вы можете переопределить функцию push на свою через прототип.
Array.prototype.push = function(){ваша функция}
Правда придется переписать функционал исходного метода push со своими правками.
Поэтому наверно лучше сделать так:
объявить в объекте Array свой метод, который бы уже вызывал push в зависимости от ваших условий.
Например
Array.prototype.my_push = function(toggle, value){
if (toggle === 0) console.log('no push');
else {
this.push(value)
}
}
ну и, соотвественно, теперь вызывать не push, а my_push
let arr = [1,2,3];
arr.my_push(0, 4) // выдаст 'no push' и ничего не поменяется
arr.my_push(1, 4) // массив 'arr' теперь имеет вид [1,2,3,4]
при вызове arr.push(blabla), запускается функция push объекта Array.
Т. е. вы можете переопределить функцию push на свою через прототип.
Array.prototype.push = function(){ваша функция}
Правда придется переписать функционал исходного метода push со своими правками.
Поэтому наверно лучше сделать так:
объявить в объекте Array свой метод, который бы уже вызывал push в зависимости от ваших условий.
Например
Array.prototype.my_push = function(toggle, value){
if (toggle === 0) console.log('no push');
else {
this.push(value)
}
}
ну и, соотвественно, теперь вызывать не push, а my_push
let arr = [1,2,3];
arr.my_push(0, 4) // выдаст 'no push' и ничего не поменяется
arr.my_push(1, 4) // массив 'arr' теперь имеет вид [1,2,3,4]
Алексей Сиднев
Спасибо!! это идеальный выход!!!
Похожие вопросы
- Что такое prototype? (подробности внутри)
- Возврат, Задержка, и потерянный This (подробности внутри)
- Цепочка наследования классов (подробности внутри)
- Калькулятор из функций
- Вопрос по JavaScript, обращение к функции, которая находится в функции...
- Почему функция постоянно возвращает true или false? (но не должна)
- Как в данном случае лучше заменить стрелочную функцию на обычную?
- Как объявить глобальную переменную внутри функции в js?
- Помогите доделать задачу используя функции
- Как сделать проверку через бесконечный цикл?