Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: weakmap, замыкания, символы

Защищенные свойства. Для чего и как сделать свойство защищенным?

Этот вопрос исследует концепцию защищенных свойств в JavaScript, объясняя их назначение и способы реализации. Он проверяет понимание инкапсуляции и управления доступом к свойствам объекта.

Короткий ответ

Защищенные свойства в JavaScript — это свойства, доступ к которым ограничен для внешнего кода, но доступны для методов объекта. Это позволяет скрыть внутренние данные объекта и предотвратить их случайное изменение. Защищенные свойства можно реализовать с помощью символов, WeakMap или через замыкания.

Длинный ответ

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

Использование символов: Символы являются уникальными и не могут быть случайно изменены, что позволяет создать защищенные свойства.

const protectedProp = Symbol('protectedProp'); 
class Example {
	constructor(value) {    
		this[protectedProp] = value;    
	}    
	getProtectedProp() {    
		return this[protectedProp];    
	} 
} 
const obj = new Example('secret'); 
console.log(obj.getProtectedProp()); // secret 
console.log(obj[protectedProp]); // undefined

Использование WeakMap: WeakMap позволяет хранить данные, доступные только внутри методов класса.

const privateData = new WeakMap(); 
class Example {
	constructor(value) {     
		privateData.set(this, value);    
	}    
	getPrivateData() {     
		return privateData.get(this);    
	} 
} 
const obj = new Example('hidden'); 
console.log(obj.getPrivateData()); // hidden

Замыкания: Вы можете создать защищенные свойства с помощью замыканий, которые создают область видимости, недоступную извне.

function createExample(value) {
	let protectedProp = value;    
	return {    
		getProtectedProp() {     
				return protectedProp;        
			}    
	}; 
} 
const obj = createExample('hidden'); 
console.log(obj.getProtectedProp()); // hidden 
console.log(obj.protectedProp); // undefined

Таким образом, защищенные свойства помогают контролировать доступ к данным и повышают безопасность кода.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#weakmap

#замыкания

#символы

Подпишись на React Developer в телеграм