Есть ли способ переопределить получение свойства объекта js?

Мне нужно автоматически анализировать функции и определять, какие свойства объекта используются каждой функцией.

Функции очень простые, например

(a, b) => Math.min(100, 50 + a.strength, 50 + b.strength)

все свойства входных объектов являются числовыми, и функции не вносят изменений во входные объекты

Моей первой мыслью было проанализировать строковую форму функции, но, чтобы сделать ее более надежной, было бы идеально, если бы я мог запускать каждую из функций с тестовыми фиктивными объектами, которые динамически доставляют запрошенное свойство с любым именем и записывают это название.

Например, в vb.net вы можете определить свойство по умолчанию для классов, чтобы каждый доступ к объекту (ключу) мог динамически обрабатываться на основе значения ключа. Есть ли что-то подобное в js?

Непонятно, какой результат вы должны получить.

PM 77-1 03.08.2018 01:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать прокси и передать их функции и записать, какие свойства были вызваны:

const fn = (a, b) => Math.min(100, 50 + a.strength, 50 + b.strength)

var aProxy = new Proxy({}, {
  get: (obj, prop) => console.info(`${prop} was called on a`)
});

var bProxy = new Proxy({}, {
  get: (obj, prop) => console.info(`${prop} was called on b`)
});

fn(aProxy, bProxy);

это именно то, что мне нужно

user81993 03.08.2018 01:29

Другие вопросы по теме