apeks
@apeks
Очень серьезный человек

Что скажете о таком применении Object.defineProperty в javascript?

Не нравится мне эта история в javascript, когда все параметры объекта открыты для редактирования. Как вам такой способ определять параметры, и как вы сами уходите, и уходите ли, от этой проблемы?

Utils = {};

Utils["openProp"] = function(obj, propName){
	
	Object.defineProperty(obj, propName, {
		writable: true
	});
}

Utils["closeProp"] = function(obj, propName){
	
	Object.defineProperty(obj, propName, {
		writable: false
	});
};

function Journal(){
	
	return {
		newDefProp: function(propName, configurable = true, enumerable = false, value = "", writable = false){
			
			Object.defineProperty(this, propName, {
				configurable: configurable,
				enumerable: enumerable,
				value: value,
				writable: writable
			});
		},
		setName: function(value){
			
			Object.openProp(this, "name");
			
			this.name = value;
			
			Object.closeProp(this, "name");
		},
		getName: function(){
			return this.name;
		}
	};
}

var j = Journal();

j.newDefProp("name");
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
В реальном коде может сесть производительность очень сильно. Решаю использованием TypeScript. Зачем придумывать костыль, если есть подходящий инструмент?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы