«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Может ли JavaScript реализовать динамические геттеры и сеттеры для непредсказуемых свойств?

Может ли JavaScript реализовать динамические геттеры и сеттеры для непредсказуемых свойств?

Опубликовано 8 ноября 2024 г.
Просматривать:769

 Can JavaScript Implement Dynamic Getters and Setters for Unpredictable Properties?

Может ли JavaScript реализовать динамические методы получения/установки?

Динамические методы получения и установки позволяют объектам JavaScript обрабатывать доступ к свойствам и изменять их, помимо предопределенных свойств. В то время как более ранние методы JavaScript использовали специальные методы получения и установки для известных свойств, в этой статье исследуется возможность реализации универсальных методов получения и установки для любых неопределенных свойств.

Прокси-сервер ES2015: динамическое решение

ES2015 представил прокси-серверы JavaScript, которые позволяют создавать объекты, которые служат посредниками для других объектов. Эта возможность открывает динамические геттеры и сеттеры:

const original = {
    example: "value",
};
const proxy = new Proxy(original, {
    get(target, name, receiver) {
        if (Reflect.has(target, name)) {
            let rv = Reflect.get(target, name, receiver);
            if (typeof rv === "string") {
                rv = rv.toUpperCase();
            }
            return rv;
        }
        return "missing";
    },
});

console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE"
console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing"

В этом примере прокси-объект перехватывает доступ к свойствам исходного объекта. При доступе к строковому свойству прокси преобразует его в верхний регистр и возвращает; для неизвестных свойств возвращается «отсутствует» вместо неопределенного.

Эта реализация совместима с разными браузерами, если браузер поддерживает ES2015 (ES6). Для старых браузеров рассмотрите возможность использования полифилов или альтернативных методов. Прокси предоставляют гибкое решение для динамических методов получения и установки, обеспечивая эффективную обработку свойств и их самоанализ без изменения исходного объекта.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3