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");
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
В реальном коде может сесть производительность очень сильно. Решаю использованием TypeScript. Зачем придумывать костыль, если есть подходящий инструмент?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы